jQuery UI对话框 - 停止关闭事件

18

有没有办法停止jQuery UI对话框的关闭事件?

我有一个带表单的对话框模态框。当用户关闭对话框时,我想提示“不保存更改继续吗?”[是] [否]。 [是] 按钮会按预期继续并关闭对话框。 [否] 按钮将停止关闭事件并保持对话框打开。

这个可行吗?

2个回答

39

是的,您可以使用beforeClose选项。根据文档

当尝试关闭对话框时,将触发此事件。如果beforeClose事件处理程序(回调函数)返回false,则关闭将被阻止。

代码示例

提供一个回调函数作为初始化选项来处理beforeClose事件。

$( ".selector" ).dialog({
   beforeClose: function(event, ui) { ... }
});

1
我以前见过这个,但没想到可以用于我需要的场合。它真的很有帮助!如果有人好奇,$(ele).dialog("close")会返回beforeClose之前的值。在关闭对话框后,我有一个执行了许多其他操作的函数,而我也需要检查/返回对话框("close")调用。 - Marie

7

Justin的答案用于显示模态框很好。如果你想取消关闭,你的函数应该返回false,像这样:

$( ".selector" ).dialog({
   beforeClose: function(event, ui) 
    { return check_if_unsaved_changes(..); }
});

如果对话框应该关闭,则check_if_unsaved_changes应返回true,如果不应关闭,则返回false。


我曾经想知道返回值是否为取消操作,但不确定。如果文档中提供了取消或不取消的示例,而不仅仅是提到它,那就太好了。这很有帮助。 - jinglesthula

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接