2011-01-26 10 views
6

を受け取るソート可能の確認: リスト-AとリストB私は2つの別々のULリストを持っているjQueryのイベント

それらの両方は、jQueryのUIプラグインにソートでき感謝しています。

私が取り組んでいるプロジェクトのユーザーは、あるリストから別のリストにアイテムを移動したときの動作を確認したいのですが、ではなく同じリスト内を移動するときにはです。アクションがトリガーされると、ページはAjaxリクエストをサーバーに送信してリストの位置を更新します。

私はイベントの順序が間違っています。これまでの私の経験では、確認ダイアログが表示される前に、受信イベントの前に更新イベントがトリガーされているので、リクエストは既に開始されています。アイテムが別のリストにドラッグされている場合、ユーザーがアクションを確認するまで、何もサーバーに送信されるべきではない:

残念ながら、私は要求をトリガするが、私の場合、それは本当に問題ではありませんリストのどれを忘れます。

私はかなりjQueryを使用しましたが、私はこれについていくつかの助けをすることができたと思います。

Javascriptを:

$('.sortable').sortable({ 
    start: function (event, ui) { 
     $(ui.helper).addClass("sortable-drag-clone"); 
    }, 
    stop: function (event, ui) { 
     $(ui.helper).removeClass("sortable-drag-clone"); 
    }, 
    update: function (event, ui) { 

     if ($(ui.sender).length == 0) { 
      alert("item was moved within the same list."); 
      //Make request 
     } else { 
      //do nothing. 
     } 
    }, 
    receive: function (event, ui) { 
     if (confirm("show move or copy dialog, from {0} to {1}")) { 
      //do request 
     } else { 
      $(ui.sender).sortable("cancel"); 
      //no request 
     } 
    }, 
    tolerance: "pointer", 
    connectWith: ".sortable", 
    placeholder: "sortable-draggable-placeholder", 
    forcePlaceholderSize: true, 
    appendTo: 'body', 
    helper: 'clone', 
    zIndex: 666 
}).disableSelection(); 

マークアップ:

<div id="list-A"> 
    <ul class="sortable"> 
     <li>item 1</li> 
     <li>item 2</li> 
     <li>item 3</li> 
    </ul> 
</div> 
<div id="list-B"> 
    <ul class="sortable"> 
     <li>item 1</li> 
     <li>item 2</li> 
     <li>item 3</li> 
    </ul> 
</div> 

更新:

シナリオI) ユーザーがA3にA1をドラッグ - 結果はありませんので確認ダイアログではありませんthにリクエストが送信されます。新しいソート順が維持されるようにします。

シナリオII) ユーザがA1にB3(またはB3にA1をドラッグ) - 結果は、確認ダイアログであり、その後、ダイアログが受け入れられた場合にのみ、要求がサーバに送信されます。これは私が私のコメントの1つに書いたように2つの要求で解決したところです。

答えて

1

updateの方法は必要ありません。削除するだけです。 Example link

+0

ほとんどありません。同じリスト内でソート可能なイベントをピックアップしません。しかし、私はデータ属性( "doConfirm"、true)を設定し、それをstopイベントハンドラでリセットすることによって、動作させるようにしました。コードを見つけることができるかどうかがわかります。完全ではありません。これにより、サーバーに2つの要求が送信されます(1つはリストA、もう1つはリストB)。理想的には、アイテムを自分で集約して1つのリクエストを開始することを望んでいました。 –

+0

@Adam Asham:私は迷っています!ユーザーがあるリストから別のリストへの移動を確認したときにサーバーに送信したいのですか?サーバーコールを要求する必要がある場合のシナリオを一覧表示できます。 – ifaour

+0

申し訳ありませんが、私は説明に貧弱な仕事をしたに違いありません。私は2つのシナリオで質問を更新しました。 –