5

我正在使用 SimpleModal ( http://www.ericmmartin.com/projects/simplemodal/ ),并且我有一个显示在对话框中的表单。我想要做的是能够在每次用户尝试关闭对话框(通过转义或单击关闭图标)时出现确认,并询问他们是否真的想在不保存表单数据的情况下关闭它. 我尝试了以下方法:

onClose: function (dialog) {
    if (confirm('Are you sure you want to close without saving?')) {
        $.modal.close();
    }
}

但它只会触发一次。如果您点击取消,则稍后无法再次关闭,这是有道理的。有人有建议或解决方案吗?任何帮助将不胜感激。:)

4

3 回答 3

8

我查看了SimpleModalfor you 的来源,你想做的事情不能用他们的代码来完成。这就是为什么:

就在调用您的自定义回调之前,onClose它会调用:

s.unbindEvents();

这实际上是说“无论你喜欢与否,这个盒子都会关闭”。它不像您可以取消的普通回调。

我建议改为使用jQuery UI Dialogbeforeclose ,您应该会发现使用它们的回调非常容易实现该功能。您只需使用:

beforeclose: function(){ 
    return confirm('Are you sure you want to close without saving?')
}
于 2010-01-10T22:00:38.190 回答
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 事件一样。

于 2010-05-18T18:55:01.010 回答
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;
    }
}

希望这可以帮助。

于 2010-01-11T11:37:33.243 回答