2012-04-27 53 views
0

我有一個jQuery的確認(「你確定你想離開之前保存?」),設置「isModified」爲true時,當文本框或textarea已被更改。現在的問題是,當我按下按鈕(保存..)確認顯示。JQuery的 - 除了按鈕+ Evertything +提交

有沒有辦法讓按鈕按下時跳過確認?

// Confirm leaving page 
var isModified = false; 
var modifiedMsg = 'Are you sure?'; 

$('textarea,input').change(function(){ 
    if(!isModified){ 
     isModified = true; 
     } 
    });   

window.onbeforeunload = function(){ 
    if(isModified){ 
     return modifiedMsg; 
    } 
    }; 
+1

是的。保存按鈕切換'isModified'回到'false'。 – JJJ 2012-04-27 05:44:16

回答

1

貌似你試圖讓一個骯髒的檢查。您可能需要進行以下更改:

而不是試圖捕獲哪些按鈕被按下,您真正​​關心的(我假設),是當您提交表單時?

$('form').submit(function(e) { 
    isFormSubmitting = true; 
}); 

然後在你的骯髒的檢查,確保兩者都相應地設置。由於提交表單可能會玷污髒的狀態,因此使用一個標誌是很危險的。

$(window).unload(function(e) { 
    if(isModified && !isFormSubmitting){ 
     return modifiedMsg; 
    } 
}); 
1

其實如果你的按鈕也是input type="submit"它將有資格被選中。您可以通過選擇或者是具有特定屬性的

$('textarea,input[type=text]')

,或者使用不過濾與input[type=submit]

+0

不解決它。當更改東西,所以isModified = true時,按下按鈕仍然顯示確認框。 – 2012-04-27 06:02:12

+0

你能告訴我你的表單代碼嗎? – 2012-04-27 06:06:54

1

試試這個

$('textarea,input[type!="submit"],input[type!="button"]') 
+0

沒有解決它。當更改東西,所以isModified = true時,按下按鈕仍然顯示確認框 – 2012-04-27 06:03:09

+0

不要忘記重置isModified = false後顯示確認框 – 2012-04-27 06:08:29