2013-06-13 19 views
6

Buranın birçok kez burada sorulduğundan eminim. Gördüğüm latest, Ara. 2012. Ancak, bu sorun için birisinin düzeltme/daha iyi bir çözümü var mı diye sormak istiyorum.jQuery Dialog'u kullanırken komut dosyası nasıl durdurulur?

Ben jQueryUI Dialog kullanıyorum ve o diyalog açılır ve kullanıcı henüz bir cevap seçmediniz zaman için komut yürütme durdurmak mümkün olup olmadığını sormak istiyorum. Sadece javascript confirm() gibi yapar.

İşte ben bugüne kadar ne var:

jQuery

$("#GlobalDialogBox").dialog({ 
     modal: true, 
     buttons: { 
     "Yes": function() { 
      callbackFunctionTrue(); 
      $(this).dialog('close'); 
     }, 
     "No": function() { 
      callbackFunctionFalse(); 
      $(this).dialog('close'); 
     } 
     } 
    }); 

    alert("This should fire after answering the dialog box."); //but this fires as soon as the dialog pops up.. :(

alert script ortak parçası olduğunu olursa olsun cevabın iletişim kutusunu yanıtlayan sonra patlar. Düzeltmemde, alert'u callbackFunctionTrue() ve callbackFunctionFlase() içine ekledim ve iş yapıyor.

Peki ya bunu yapmak istemiyorum? Komutum açıldığında, kodlarımı dialog kodunun altına özgürce ekleyebilmem için komut dosyasını nasıl durdurabilirim? Daha iyi bir çözümü olan var mı? Herhangi bir yardım takdir edilecektir! Şimdiden teşekkürler! :]

+0

http://stackoverflow.com/a/6924588/1166285 –

cevap

3

İletişim kutusu kapatıldığında yakın olayı tetikler. Eğer iletişim kutusuna olay dinleyicisi ekleyerek bunu yapabilir:

$("#GlobalDialogBox").on("dialogclose", function(event, ui) { 
     alert("something"); 
}); 

veya daha tutarlı bir şekilde

:

$("#GlobalDialogBox").dialog({ 
    modal: true, 
    buttons: { 
     "Yes": function() { 
      callbackFunctionTrue(); 
      $(this).dialog('close'); 
     }, 
     "No": function() { 
      callbackFunctionFalse(); 
      $(this).dialog('close'); 
     } 
    }, 
    close: function(event, ui){ 
     alert("something"); 
    } 
}); 
-2

işlevi durdurmak için dönüş'u kullanabilirsiniz.

+0

diye bunu durdurmak değil duraklatmak için wnats – chiliNUT

1

Gerçekten keyfi komut yürütmeye ara olamaz. Geri arama işlevleri bu durumda sizin için en iyi çözümdür, bu nedenle iletişim kutusundaki düğmelerinizin altındaki seçenekler, bir yakın olay işleyicisini ekler ve uyarılar ile iletişim kutusunun kapatılmasından sonra yürütmek istediğiniz herhangi bir kodu koyar.

0

Bunu yapmak istemediğinden emin değilsiniz. Uyguladığınız şey, aynı durumdayken uygulamamla aynı ve işe yaradı. İletişim kutusunu kendi JavaScript işlevinde başlatın ve hangi öğenin tıklandığına bağlı olarak evet/hayır işlevlerinizi başlatın. Uyarı kutusu gerekmez.

1
function dialog_confirm(){ 
    $("#dialog-confirm").dialog({ 
    //autoOpen: false, 
    resizable: false, 
    height:140, 
    modal: true, 
    buttons: { 
     "Delete all items": function() { 
     $(this).dialog("close"); 
     dialog_confirm_callback(true); 
     }, 
     Cancel: function() { 
     $(this).dialog("close"); 
     dialog_confirm_callback(false); 
     } 
    } 
    }); 
} 
function dialog_confirm_callback(value) { 
    if (value) { 
    alert("Confirmed"); 
    } else { 
    alert("Rejected"); 
    } 
} 
İlgili konular