当用户提交表单时,如何禁用beforeunload动作?

我有这一小段代码:

<script> $(window).bind('beforeunload', function() { $.ajax({ async: false, type: 'POST', url: '/something' }); }); </script> 

我想知道,当用户点击提交button时,我怎么能禁用这个请求。

基本上就像这样,就这样。 当您提出问题并决定closures该页面时,您会看到一个警告窗口,但是当您提交表单时不会发生这种情况。

使用beforeunload事件处理程序调用unbind

 $('form#someForm').submit(function() { $(window).unbind('beforeunload'); }); 

要防止提交表单,请添加以下行:

  return false; 

使用

 $('form').submit(function () { window.onbeforeunload = null; }); 

确保你有这个主要提交function之前! (如果有的话)

这是我们使用的:

在准备好的文档上,我们调用了beforeunload函数。

 $(document).ready(function(){ $(window).bind("beforeunload", function(){ return(false); }); }); 

在提交或location.reload之前,我们解除绑定variables。

 $(window).unbind('beforeunload'); formXXX.submit(); $(window).unbind("beforeunload"); location.reload(true); 

寻找检测onbeforeunload的ASP.NET Web应用程序当然,我必须显示警告消息,如果一些input控件在页面上使用主页和内容页的ASP.NET更改。 我在主页上使用3个内容占位符,最后一个是在表单之后

 <form runat="server" id="myForm"> 

所以在表单结束标记之后和正文结束标记之前使用了这个脚本

 <script> var warnMessage = "Save your unsaved changes before leaving this page!"; $("input").change(function () { window.onbeforeunload = function () { return 'You have unsaved changes on this page!'; } }); $("select").change(function () { window.onbeforeunload = function () { return 'You have unsaved changes on this page!'; } }); $(function () { $('button[type=submit]').click(function (e) { window.onbeforeunload = null; }); }); </script> 

在这种情况下,在装载之前不能可靠地工作。 你应该本地分配它

所以我得到它的工作就像这个绑定和解除绑定也没有为我工作也随着jQuery 1.7的事件API已更新,.bind()/。unbind()仍然可用于向后兼容,但首选的方法是使用on()/ off()函数。

  <!DOCTYPE html> <html> <head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> <script type="text/javascript" src="http://cdn.jsdelivr.net/jquery.dirtyforms/2.0.0-beta00006/jquery.dirtyforms.min.js"></script> <script type="text/javascript"> $(function() { $('#form_verify').dirtyForms(); }) </script> <title></title> <body> <form id="form_verify" action="a.php" method="POST"> Firt Name <input type="text"> Last Name <input type="file"> <input type="submit"> </form>