スケジューリングシステムにjqueryドラッグ/ドロップを使用しています。私は時間がある行(15分間隔)と労働者の列を持っています。jquery drop on top、not cursor
イベントはdivであり、セル内の絶対位置を表し、その高さはイベントの時間長に対応します。イベントがいくつかの15分のセルの上を流れます。
https://jsfiddle.net/m5ukpngp/
$('.event').draggable({
opacity: .7,
cursor: 'move',
revert: 'invalid',
});
$('td').droppable({
hoverClass: "hover",
tolerance: "pointer",
drop: function(event, ui) {
if (false === dropped) {
$(this).effect("highlight", {}, 1500);
dropped = true;
$(ui.draggable).detach().css({
top: 0,
left: 0
}).appendTo($(this));
}
},
activate: function(event, ui) {
dropped = false;
}
});
Iタスクを指定し、DIVを拾う場合、タスクの上部には、落下するときにカーソルがあったセルで終了します。
私がタスクを最下位に取り上げると、タスクを8時00分に開始すると、カーソルが9時15分に移動することがあります。私はその作業を中止し、9時15分に開始する。
divがピックアップされる場所ではなく、divの上部にドロップされると指定することはできますか?
また、ドラッグ可能なdivをドロップ不可能にすることができるので、あるタスクを別のタスクの上にドロップすることはできませんか、バックエンドはそれを処理する必要がありますか?
EDIT: アイデア:タスクが最上部の行にあるときに正しく動作します。 "ポストイット"をピックアップすると、カーソルが一番上の行に位置するように下に移動するとどうなりますか?
EDIT2: ここにあります。可動divの上端がカーソルにスナップします。
https://jsfiddle.net/m5ukpngp/1/
感謝を使用することができ、それが正常に動作しません。たとえば、大きなタスク1を8:00に移動すると、それは最下位に移動します。 –
計算の仕方を理解しようとすると...これを防ぐことができます。私があなたのためにコーディングしたのは、イベントの下部をドラッグする場所に配置することです。今、もしこの動きが不可能なので計算が失敗すれば...あなたはそれに取り組まなければなりません。私はここでは無料でコードを書いていません。私はちょうど助けを与える。あなたは今それを行う方法があり、あなたはそれを完了することができます。 –
divの先頭がカーソルにスナップするように修正しました より直感的です。 –