Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果单击“提交”按钮,则阻止执行beforeunload函数_Javascript_Jquery - Fatal编程技术网

Javascript 如果单击“提交”按钮,则阻止执行beforeunload函数

Javascript 如果单击“提交”按钮,则阻止执行beforeunload函数,javascript,jquery,Javascript,Jquery,我有以下功能,如果用户在填充$('.article\u 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){ ret

我有以下功能,如果用户在填充
$('.article\u 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')

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

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.
}

如何将事件处理程序绑定到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.
});