2010-07-03 30 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

相关问题