2011-01-24 30 views
20

我這一小段代碼:如何在用戶提交表單時禁用beforeunload動作?

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

我不知道,我怎麼會禁用當用戶點擊提交按鈕這一請求。

基本上就像這裏,在SO上。當您提出問題並決定關閉該頁面時,您會看到一個警告窗口,但當您提交表單時不會發生這種情況。

回答

34

呼叫unbind使用beforeunload事件處理程序:

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

爲了防止提交的表單,添加以下行:

return false; 
+0

添加下面一行:'返回false;`,但在這裏我補充一點線? – Kiquenet 2017-10-24 08:30:02

15

使用

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

確保你有這個主要提交功能之前! (如果有的話)

+0

對我來說,這工作,而雅各布勒金'答案沒有 – tObi 2018-03-01 12:49:40

0

這就是我們使用:

在準備我們稱之爲beforeunload功能的文檔。

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

在任何提交或location.reload之前,我們解除綁定變量。

$(window).unbind('beforeunload'); 
formXXX.submit(); 

$(window).unbind("beforeunload"); 
location.reload(true); 
0

尋找檢測爲ASP.NET Web應用程序onbeforeunload好,我是,我 如果已經使用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> 

beforeunload沒有按之前就這種方式而言,只要綁定起作用就不能可靠地工作。你應該本地分配它

所以我得到它的工作就像這個綁定和解除綁定沒有爲我工作也隨着jQuery 1.7的事件API已更新,.bind()/。unbind()仍然可用爲了向後兼容,但首選的方法是使用on()/ off()函數。

0
<!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> 

+1

https://github.com/snikch/jquery.dirtyforms – 2017-10-24 13:01:06

相關問題