覆盖jQuery自定义事件

时间:2015-12-03 17:48:44

标签: javascript jquery

我已经得到了以下代码,可以将事件“传播”到我的所有js模块中。这是在尝试离开当前页面时触发的。问题是我提交表单(提交/取消/保存)时不会触发此操作。有没有办法检查?

main.js:

...

$(document).ready(function(){

    $(window).on('beforeunload', function(){
            var e = $.Event('webapp:page:closing');

            $(window).trigger(e);

            if (e.isDefaultPrevented()){
                return e.message || 'You have unsaved stuff!';
            }
        });
}

...

3 个答案:

答案 0 :(得分:2)

在提交/保存/取消之前,您可以调用以下代码,这将从所有侦听器中删除处理程序

$(window).off('webapp:page:closing');

答案 1 :(得分:2)

在表单提交解除绑定事件:


$("#frm").submit(function(e) {
    $(window).off('beforeunload');
});

来自MDN:.off()方法删除附加了.on()

的事件处理程序

答案 2 :(得分:1)

唯一可以想到的方法是:在包含表单的页面中,当它处理webapp:page:closing事件时,如果提交了表单,则应该阻止默认值(它可以通过页面中的变量进行跟踪。)