2010-07-03 83 views
2

您能否推薦一些輕量級jQuery插件來檢測由選擇器指定的字段是否已更改?jQuery:警告如果textarea已更改

E.g.像這個在SO上,當我想在後期編輯期間重新加載頁面時顯示確認對話框。

回答

3

這太基本/特定功能可能有自己的插件。

所有你需要做的是,如果存儲的任何元素改變時設置爲true一個布爾值:

var changed = false; 

$(document).ready(function() { 
    $('.watch-for-changes').change(function() { 
     change(); 
    }); 
    window.onbeforeunload = function() { 
     if (hasChanged()) { 
      return "There are unsaved changes on the page."; 
     } 
    }; 
} 

function change() { 
    changed = true; 
} 

// use this to programmatically change an input field 
function changeValue(elField, value) { 
    $(elField).val(value); 
    change(); 
} 

function hasChanged() { 
    return changed; 
} 

編輯:以前使用的onbeforeunload是不正確的。有關其用法的更多詳細信息,請參閱this page

1

無插件是必要的:

$('selector').change(function() { alert('I've changed!'); }); 

在這樣一個不同的是,它檢查是否一個框爲空或有默認的文本中它,你做一個動作之前。它不會被觸發「變化」。

+0

我不認爲這就是他所指的。當您在「提問」或「您的答案」框中鍵入內容並嘗試離開或刷新頁面時,彈出確認對話框。 這是沒有任何形式的AJAX請求,可能只是檢查,看看這些領域是否是非空的。 – 2010-07-04 00:33:04

+0

啊,謝謝,更新了最後一段。 – 2010-07-04 00:46:14

0

實際上,它可能比其他答案中提到的稍微複雜一些,只是提交表單也會觸發事件。

事情改變了現在:有IS一個真正有用的jquery插件,正是你所要求的:are-you-sure

你可以看到它是如何與他們的demo page

相關問題