例如就像 SO 上的这个一样,当我想在后期编辑期间重新加载页面时显示确认对话框。
您需要做的就是存储一个布尔值,如果任何元素发生更改,该值将设置为 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
是不正确的。有关其用法的更多详细信息,请参阅此页面。
$('selector').change( function() { alert( 'I've changed!'); } );
SO上的那个不一样,它在你做一个动作之前检查一个框是空的还是里面有默认文本。它不是在“变化时”触发的。
现在情况发生了变化:
IS 一个非常有用的 jQuery 插件,它可以满足您的要求:你确定吗.
您可以通过他们的演示页面看到它是如何工作的。