如何在jquery ui对话框中检测触发close事件的内容

Riz*_*Riz 3 jquery-ui modal-dialog

我有创建和取消按钮作为jquery-ui模式对话框的一部分.只有当用户点击"创建"时,我才想在关闭对话框后做某些事情.如果他们点击"取消",或"X"或按Esc,我想做其他事情.有没有办法将参数传递给close事件处理程序或其他一些方法来检测导致关闭的原因?

xte*_*ore 5

在关闭事件中,您可以通过查看事件参数(参数1)来判断发生了什么.

如果通过单击[x]关闭对话框,则会获得鼠标事件字段.

同样,如果通过按Escape关闭对话框,则会获得键盘事件字段.

如果以编程方式关闭对话框,则上述情况均不适用.

所以,一个好的起点是看看event.which.用[x]关闭意味着你得到鼠标按钮值(1到3),用Escape关闭意味着你得到关键代码(27).以编程方式关闭意味着event.which将是未定义的.

现在回到你的问题......

如果他们按下Create,你想要做一件事 - 这很简单,只需将它放在该按钮的功能中即可.

您想在[x],Escape或单击取消上执行其他操作.创建一个名为canceled()(或其他)的函数,然后在Cancel按钮上调用该函数,如果event.which有值,则在close事件中调用它.

像这样......

buttons: {
    'Create': function() {
        // do your stuff here
        $(this).dialog('close');
    },
    Cancel: function() {
        cancelled();
        $(this).dialog('close');
    }
},
close: function(event) {
    if (event.which) {
        cancelled();
    }
}
Run Code Online (Sandbox Code Playgroud)

我认为这涵盖了你所需要的东西,它避免了制造一个变量来跟踪你去过的地方.