jQuery:如果textarea发生变化则发出警报

时间:2010-07-03 22:22:01

标签: jquery-plugins jquery

你能推荐一些轻量级的jQuery插件来检测选择器指定的字段是否已更改?

E.g。像这样的SO,​​当我想在后期版本中重新加载页面时显示确认对话框。

3 个答案:

答案 0 :(得分: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 :(得分:1)

无需插件:

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

SO上的那个是不同的,它是在你做一个动作之前检查一个框是否为空或者是否有默认文本。它不是“在变化中”触发的。

答案 2 :(得分:0)

Actualy,它可能比其他答案中的说法稍微复杂一点,只是提交表格也会引发事件。

现在情况发生了变化: IS 是一个真正有用的jquery插件,可以满足您的要求:are-you-sure

您可以看到它与demo page的合作方式。