2011-01-26 14 views
6

alma Sıralanabilir.teyit jQuery iki ayrı ul listeleri vardır etkinliği

Çalıştığım projenin kullanıcıları, öğeler aynı liste içinde taşınırken öğeler bir listeden diğerine taşınırken eylemi onaylamak istiyor, ancak . Bir eylem tetiklendiğinde, sayfa, liste (ler) in pozisyonlarını güncellemek için sunucuya bir Ajax isteği başlatır.

Beni rahatsız eden olayların sırasıdır. Şimdiye kadar elde ettiğim deneyimim, güncelleme olayının alma olayından önce tetiklenmesi, böylece onaylama iletişiminin gösterilmesinden önce, bir istek zaten başlatıldı.

Maalesef, isteği tetikleyen listelerden hangileri olduğunu unutuyorum, ancak benim durumumda gerçekten önemli değil: bir öğe başka bir listeye sürüklenirse, kullanıcı eylemi onaylayana kadar sunucuya hiçbir şey gönderilmemelidir.

jQuery'yi biraz kullandım ama sanırım bu konuda yardıma ihtiyacım var.

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(); 

Biçimlendirme:

<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> 

Güncelleme:

Senaryo I) kullanıcı A3 A1 sürükler - sonuç o kadar iletişim hiçbir onaylama olduğu bir istek gönderilir e sunucu böylece yeni sıralama düzeni devam ediyor.

Senaryo II) kullanıcı B3 (veya B3) A1 A1 sürükler - Sonuç bir onaylama diyalog ve daha sonra, iletişim kabul edildiği takdirde, bir istek sunucuya gönderilir. Benim yorumlarımızdan birinde tarif ettiğim gibi iki istekte bulundum.

cevap

1

update yöntemine ihtiyacınız yoktur, daha sonra kaldırmanız yeterlidir! Example link.

+0

Neredeyse var ama pek de değil. Aynı listedeki sıralanabilir olayları toplamaz. Bununla birlikte, bir veri özniteliği ("doConfirm", true) ayarlayarak ve durdurma olay işleyicisinde bunu sıfırlayarak çalışmasını sağladım. Kodu bulabilir miyim göreceğim. Mükemmel değildir: sunucuya iki istek gönderilmesine neden olur (bir liste-A için ve bir liste-B için). İdeal olarak, eşyaları kendim toplayacağım ve tek bir istekten vazgeçmeyi umuyordum. –

+0

@Adam Asham: Kayboldum! Kullanıcı taşıma işlemini bir listeden diğerine doğruladığında sunucuya göndermek ister misiniz? Sunucu çağrısı istendiğinde senaryoları listeleyebilir. – ifaour

+0

Özür dilerim, açıklamakta fakir bir iş yapmış olmalıyım. Soruyu iki senaryo ile güncelledim. –

İlgili konular