這個想法非常簡單,它幾乎可以工作。有兩個表格,用戶可以選擇在兩個表格之間拖動行。當一行從table1拖到table2時,使用ajax來更新數據庫,其中包含從table1中刪除的數據,添加到table2中,並用新數據重新顯示兩個表。如果將信息從表2拖放到表1,則同樣的結果。拖動表格之間的行
您可以看到代碼here的樣本。
下面是Javascript代碼爲表之一的摘錄:
var startTable = "table1";
var $tabs=$("#" + startTable);
$("tbody.connectedSortable")
.sortable({
connectWith: ".connectedSortable",
items: "> tr:not(:first)",
appendTo: $tabs,
helper:"clone",
cursor:"move",
zIndex: 999990
})
.disableSelection()
;
$($tabs).droppable({
accept: ".connectedSortable tr",
hoverClass: "ui-state-hover",
drop:function(event, ui){
var start= ui.draggable.attr("id");
var desTable = $(this).attr("id");
if(start != desTable){
alert("The ajax should be called");
}
return false;
}
});
它完美,除了只有一個情況。如果將一行從Table1拖到Table2,它將創建一個插槽,以顯示該行放開時該行將被插入的位置。換句話說,如果用戶從Table1拖動一行到Table2的最後一個元素,它將創建一個打開的佔位符(在Table2的最後一行下)來描述放開後行的位置。這有一個問題。如果創建了佔位符,但該行被拖動到表外並放開,則該行仍然會轉到佔位符,但可拖動的屬性不會被調用。
我想要發生的是,如果創建了一個佔位符,無論該行放在哪裏,它都會轉到佔位符,並調用與它所在表中對應的可丟棄代碼。如果沒有地方持有人,行應該回到它被拖出的地方,什麼都不應該發生。
我試過兩個表之間拖動行的每個例子都有同樣的問題。你們有沒有辦法調用可丟棄的代碼,即使該行被丟棄在表外?或者,也許有更好的方法來調用Ajax,而不是當行被放在桌子上時?任何有識之士將不勝感激。
您可以使用可排序的更新事件而不是放置事件。 – 2014-11-23 18:24:57
如果那麼簡單,那將是驚人的。我將在大約一個小時內處理它,然後將回傳結果。謝謝。 – Brian 2014-11-23 18:40:20
更新事件看起來像我在找什麼。我改變了我的代碼來使用更新,但我遇到了一個錯誤。從table1更新永遠不會被調用,只有從table2更新被調用。另外,如果我從table1拖到table2,table2更新被調用兩次。這裏是小提琴:http://jsfiddle.net/bhealy/t011juda/28/ 任何想法是怎麼回事? – Brian 2014-11-23 19:42:40