我是 javascript 和 jQuery 新手。我正在尝试使用 jQuery UI 小部件实现模式对话框。
模式对话框正确显示了“确定”和“取消”按钮,但对话框('open')函数调用似乎不会阻止并等待“确定”或“取消”单击。例如,当我运行以下代码时
.....点击按钮
okToDelete = false; //a global variable
$('deleteDialog').dialog('open'); //this does not block but returns immediately
alert(okToDelete == true ? "ok" : "false");
首先显示警告框,然后然后显示模式对话框! okToDelete 是一个全局变量,我在进入函数时设置为 false,并在“确定”按钮回调中设置为 true。
这是我的对话框初始化函数
$("#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;
}
}
});
最佳答案
这并不是要“阻止”。如果您想在对话框关闭后显示警报(我假设这是为了测试)或调用其他函数,如果您将其放置在 callback
或 ok
中,取消
功能。
看看这个:
http://docs.jquery.com/UI/Dialog#event-close
文档中的事件close
:
该事件在对话框关闭时触发。
代码示例
提供回调函数来处理关闭事件作为 init 选项。
$('.selector').dialog({
close: function(event, ui) { ... }
});
通过类型绑定(bind)到关闭事件:dialogclose。
$('.selector').bind('dialogclose', function(event, ui) {
...
});
关于jQuery UI 模式对话框不阻塞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1733771/