4

我正在寻找一种在文本框文本发生更改时绑定到事件的方法。现在,我有这样的事情:

$("#inputPane").change(function() { alert("Changed!"); });

但是,只有在文本框失去焦点时才会调用它。每当添加、删除或剪切/粘贴新字符时,我都想获得一个事件。

我不想为此使用任何第三方插件。使用纯 jquery 会更好。

4

3 回答 3

3

最好的选择是使用keyup事件。

$("#inputPane").keyup(function() {
    alert("Changed!");
});

但是,您应该考虑到它会在单击任何键时触发,甚至Ctrl, Alt,Shift等。

于 2012-05-19T16:25:29.337 回答
3

您可能需要几个事件来涵盖键入的字符、粘贴等。

$("#inputPane").on('keyup paste click whatever', function() {
    alert("Changed!");
});

如果由于某种原因它多次触发:

var fire = true;

$("#inputPane").on('keyup paste click whatever', function() {
    if (fire) {
       fire=false;            
       alert("Changed!");
    }
    setTimeout(function() {fire=true}, 200);
});
于 2012-05-19T16:28:31.923 回答
2

这是一个如何捕捉任何变化的例子

$('#Textbox1, #Textbox2').each(function () {

    $(this).bind("propertychange keyup input paste", function (event) {
        alert("changed");
    });
});

我在一组文本框上使用它,它只触发一次

于 2012-05-19T16:29:04.297 回答