【发布时间】:2014-02-16 04:41:07
【问题描述】:
这是Fiddle
我有一个表格,其中包含可多选的可拖动行,但我想将它们整体拖到另一个表格并将它们放在那里 - 不是作为附加元素附加到另一个表格,而是做一些事情信息,即表单提交。
我的示例最初基于我在这里找到的另一个演示:multi drag demo
这里是这个问题的基本示例的 HTML 代码。
<table class="DraggableThings">
<tr draggable='true'><td >Row 1</td></tr>
<tr draggable='true'><td >Row 2</td></tr>
<tr draggable='true'><td >Row 3 </td></tr>
</table>
<table id='menu_table'>
<tbody>
<tr>
<td class='droppableItem' >accomplished</td>
</tr>
</tbody>
</table>
这里是 JQuery 代码
$('.droppableItem')
.bind('dragenter dragover', false)
.bind('drop', function(event){
accomplished($(this),event);
});
$('.DraggableThings tr').bind('click', function () {
$(this).toggleClass("selected");
});
$('.DraggableThings tr').bind('dragstart', function(event){
var mytext = event.target.innerText;
event.originalEvent.dataTransfer.setData('txt', mytext );
});
$('.DraggableThings tr').drag("init", function () {
return $('.selected');
}).drag(function (ev, dd) {
$(this).css({
top: dd.offsetY,
left: dd.offsetX
});
});
function accomplished(thing,event) {
event.dataTransfer = event.originalEvent.dataTransfer;
var data = event.dataTransfer.getData('txt');
log(data + " made it to accomplishments");
}
css
.selected {
background-color: #ECB;
}
这是Fiddle
希望有人知道答案 谢谢
【问题讨论】:
-
那么让我们照你说的去做吧——我们抓取一些行并将它们扔到放置区。它们没有被附加(所以就好像它们从未移动过),但我们可以获取被移动到那里的对象(通过 id、类等)并使用该信息。您需要从这些移动的对象中获得什么信息,表单的作用是什么?
-
嗯,这个项目是一个“待办事项”列表类型的东西,一次向服务器提交多个成就而不是一次一个太慢会很有效。 UI 已经非常复杂,具有很多可拖动性。您目前可以将单个项目拖到具有不同功能的各种图标上,例如“删除”或“推迟”或“完成”。完成此操作后,它会将信息发回服务器并更新您的个人日历并将信息存储在您的驱动器文件夹中。等
-
因此,一旦你知道它被丢弃在哪里,你应该做什么(或者你得到了你需要做的事情),手头的问题是弄清楚如何达到能够做到的程度将多个项目放入其中一个区域并收到类似“1、2 和 3 已完成”的消息。
-
没错!谢谢
-
现在正在处理它。我只需要修复消息的打印方式。
标签: jquery drag-and-drop html-table multi-select multirow