2009-11-14 124 views
9

我是JavaScript和jQuery的新手。我正在嘗試使用jQuery UI小部件實現模態對話框。jQuery UI模式對話框不阻止

模式對話框以OK和Cancel按鈕正確顯示,但對話框('open')函數調用似乎沒有阻止並等待OK或Cancel點擊。例如,當我運行下面的代碼

.....按鈕點擊

okToDelete = false; //a global variable 
    $('deleteDialog').dialog('open'); //this does not block but returns immediately 
    alert(okToDelete == true ? "ok" : "false"); 

警報框將顯示第一和THEN模態對話框顯示出來! okToDelete是一個全局變量,當我在OK按鈕回調中輸入函數並將其設置爲true時,我將其設置爲false。

這裏是我的對話框初始化函數

$("#deleteDialog").dialog({ 
     bgiframe: true, 
     autoOpen: false, 
     modal: true, 
     overlay: { 
      backgroundColor: '#000', 
      opacity: 0.5 
     }, 
     buttons: { 
      Cancel: function() { 
       $(this).dialog('close'); 

      }, 
      Ok: function() { 
       $(this).dialog('close'); 
       okToDelete = true; 
      } 
     } 
    }); 

回答

11

這並不意味着以「塊」。如果要在對話框關閉後顯示警報(我假設用於測試)或調用其他功能,如果將它放在callbackokcancel函數中。

檢查了這一點:
http://docs.jquery.com/UI/Dialog#event-close

事件close從文檔:
在關閉對話框時觸發此事件。
代碼示例

提供一個回調函數來處理關閉事件作爲init選項。

$('.selector').dialog({ 
    close: function(event, ui) { ... } 
}); 

按類型綁定到close事件:dialogclose。

$('.selector').bind('dialogclose', function(event, ui) { 
    ... 
});