HTML5拖放问题

谢谢你看这篇文章

我有一个jsFiddle页面来展示我的问题我的js小提琴

    #div1 {width:200px;height:200px;padding:10px;border:1px solid #aaaaaa;} #div2 {width:200px;height:200px;padding:10px;border:1px solid #aaaaaa;} #div3 {width:200px;height:200px;padding:10px;border:1px solid #aaaaaa;}   function allowDrop(ev) { ev.preventDefault(); } function drag(ev) { ev.dataTransfer.setData("Text",ev.target.id); } function drop(ev) { ev.preventDefault(); var data=ev.dataTransfer.getData("Text"); ev.target.appendChild(document.getElementById(data)); }     

Drag the image you want into this box!

Main Image

Image 2

Image 3

img01 img02 img03

基本上发生的是当我将图像拖动到上面的div(有3个div)时,我希望能够让图像保持原样并且不会从原始位置消失

拖动图像的div也应该捕获图像, 如果新对象拖动到同一个div (之前已经放下另一个图像), 新图像应该覆盖旧图像

另一个问题是如果我有一个带有表单post的提交按钮,通过获取div1,div2,div3的值,浏览器是否能够捕获用户输入? 例如drag1,drag2或drag3。

任何人都可以帮我解决问题,谢谢你的帮助!!

使用此jsFiddle更新:

 function drop(ev) { ev.preventDefault(); var data=ev.dataTransfer.getData("Text"); var new_img = $('#'+data).clone(); $('#'+ev.target.id).html(new_img); } 

使用下面的答案,保留原始图像。 但问题是如果我在已经获得图像的框中拖动另一张图片,它将不会覆盖。

我对你的drop函数做了一些修改。

 function drop(ev) { ev.preventDefault(); var data=ev.dataTransfer.getData("Text"); var new_img = $('#'+data).clone(); $('#'+ev.target.id).html(new_img); } 

试试这个

 function drop(ev) { ev.preventDefault(); var data=ev.dataTransfer.getData("Text"); var new_img = $('#'+data).clone(); $('#'+ev.target.id).html(""); $('#'+ev.target.id).html(new_img); } 

如果它有效,试试这个。