我正在使用SimpleModal(http://www.ericmmartin.com/projects/simplemodal/),我有一个显示在对话框中的表单。我想要做的是每次用户尝试关闭对话框时(通过转义或单击关闭图标)都会出现确认,并询问他们是否真的要关闭它而不保存表单数据。我尝试了以下方法:
onClose: function (dialog) {
if (confirm('Are you sure you want to close without saving?')) {
$.modal.close();
}
}
但它只触发一次。如果你点击取消,那么以后再也无法关闭,哪种有意义。有人有建议或解决方案吗?任何帮助将不胜感激。 :)
答案 0 :(得分:8)
我为你查看了SimpleModal
的来源,你的代码无法完成你想要做的事情。这就是原因:
在调用自定义回调onClose
之前,它会调用:
s.unbindEvents();
有效地说“无论你喜不喜欢,这个盒子都会关闭”。它不像你可以取消的普通回调。
我建议改为使用jQuery UI Dialog,您应该发现使用beforeclose
回调非常容易实现该功能。你只需使用:
beforeclose: function(){
return confirm('Are you sure you want to close without saving?')
}
答案 1 :(得分:4)
我使用jerone正在尝试的那种工作,但也重新绑定事件:
onClose: function (dialog) {
if (confirm('Are you sure you want to close without saving?')) {
$.modal.close();
}else{
this.occb = false;
this.bindEvents();
}
}
需要更新此插件以支持取消关闭事件。看起来它并没有被认为是代码中的事件。我希望它的行为与任何其他js事件一样。
答案 2 :(得分:0)
我还查看了源代码,并在执行onclosed
事件时启用了occb
标志。
您可以尝试的内容(我还没有尝试过)是覆盖此occb
,因为它已传递给this
变量:
onClose: function (dialog) {
if (confirm('Are you sure you want to close without saving?')) {
$.modal.close();
}else{
this.occb = false;
}
}
希望这有帮助。