我是Javascript和JQuery的新手,我正在實現一個警告,告訴用戶當他們已經做出未保存的表單的輸入/ select/textarea元素的變化時顯示,如果他們離開一個頁面。我現在有當他們離開一個靜態的表單頁面工作正常的情況如下:在AJAX調用期間更換表單時,如何警告用戶未更改表單的更改?
/*
* Warn users when leaving a page with unsaved content, watches elements: (input, textarea, select) unless
* they are tagged with the "noWarning" class
*/
$(document).ready(function() {
$(document).on('change', 'input:not(.noWarning),textarea:not(.noWarning),select:not(.noWarning)', function() {
window.onbeforeunload = function(e) {
return 'You have unsaved changes';
};
});
});
唯一的頁面,這是行不通的,是在我們的主編輯頁面。與其他人不同的是,此頁面有多個選項卡,用於編輯項目的不同方面,當點擊該選項時,將觸發AJAX調用,該調用會以適當的格式替換內容div以編輯不同的方面。
當用戶單擊某個選項卡時,不會顯示任何警告對話框,因此任何未保存的對輸入的更改都會丟失。
我的直覺是因爲url沒有改變,onBeforeUnload()沒有執行。所以,我必須直接在處理AJAX調用替換形式的功能檢查是否有任何變化被點擊選項卡時:
function clickedTabbedMenu() {
// This function replaces the content div with a new div and form
}
所以我的問題是,我怎麼去檢查,如果任何變動在我用另一個替換內容div之前,已經對當前表單中的元素進行了修改?我可以直接調用「更改」事件偵聽器的真/假?或者,也許處理此頁面的警告消息的一種不同的方法?
任何幫助理解
如果你正在尋找這引起了onbeforeunload事件時所做的Ajax調用那麼它幾乎是不可能的解決方案。在進行Ajax調用時,您需要有自己的實現來檢測更改。 – Mihir 2014-10-20 16:53:05
這是沒有必要調用onbeforeunload ....我想更多的沿線,當我調用該選項卡上的功能來切換窗體,查詢當前加載的窗體爲「有用戶對任何元素進行了更改? 「如果是,則顯示是否繼續的提示,否則,只需繼續替換表格 – Christian 2014-10-20 17:01:10