2009-11-14 219 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) { 
    ... 
});