如果单击提交按钮,阻止执行beforeunload功能

时间:2018-08-08 07:47:15

标签: javascript jquery

我具有以下功能,当填充$('.article_div textarea')表单字段时,如果用户正在退出页面,则会向用户发出警告。

$(window).on('beforeunload', function(event) {
    var unsaved = "Are you sure you want to exit?";
    var text = $('.article_div textarea').val();
    if (text.length > 0){
        return unsaved;
    }
});

但是,当他们单击实际表单的提交按钮时,我想阻止此弹出窗口执行。

如何修改此功能以解决此问题?提交按钮的元素是

$('button.submit_post')

2 个答案:

答案 0 :(得分:3)

您可以创建一个布尔值,该布尔值在您单击“提交”时将为正,或者在单击时删除卸载事件。代码如下:

var isSubmitClicked = false;
$('button .submit_post').on("click",onClick);
function onClick(e){
   isSubmitClicked = true;
}
$(window).on('beforeunload', function(event) {
   if(isSubmitClicked){
     isSubmitClicked = false;
     return;
   }
   // Rest of your method.
}

答案 1 :(得分:0)

如何将事件处理程序绑定到Submit事件而不是Submit按钮元素? 也许像这样:

var submitted = false;
$('form').on("submit", function() {
   submitted = true;
   console.log('submitted');
});

$(window).on('beforeunload', function(event) {
   if(submitted){
     submitted = false;
     console.log('aborted because of submit');
     return;
   }
   console.log('rest of code');
   // Rest of your method.
});