javascript \ jquery:文本框更改时触发的事件

时间:2011-11-02 13:54:11

标签: javascript jquery

我正在寻找一个jquery / simple javascript(不是其他一些库)解决方案,它将事件设置为一个文本框,当文本框被更改时将触发该文本框? (不是模糊之后)
无论它如何更改(键盘字符键/标签/输入或鼠标粘贴)我都需要它才能触发它我需要它只被激活一次。

6 个答案:

答案 0 :(得分:4)

不幸的是,没有一个。有一天,所有浏览器都支持textinput event和/或HTML5 input event,但目前并非全部支持have various bugs。您可以使用事件的组合,但是您必须自己处理每个更改的响应,并且总是有可能无法在某处覆盖某些浏览器。

因此,如果您绝对必须这样做,则必须每N毫秒轮询一次value属性。 (选择您满意的最大数字,以避免使浏览器工作太困难,并确保计时器功能中的代码尽可能紧凑和快速 - 例如,不要重新 - 每次查找元素,查看一次并保留对它的引用。)

答案 1 :(得分:0)

您可以绑定keyup事件。

$("textarea").bind("keyup", function() {
    // Fires after the user has typed
});

请参阅:http://jsfiddle.net/AWUbu/1/

答案 2 :(得分:0)

var obj = document.getElementById("field");
var func= function(){
    alert('hi');
}

obj.onkeypress= func;
obj.onclick = func;
obj.on... = func;

答案 3 :(得分:0)

除了另一个答案中概述的bind方法之外,您还可以执行此操作:

$("#txtTest").keyup(function(){
    alert($(this).val());
});

答案 4 :(得分:0)

您可以使用jQuery keydown或keyup。

var target = jQuery('#id');
target.keydown( function () { alert('hi'); } );

现在,既然你只想被召唤一次,你所要做的就是在被召唤之后立即取消绑定:

target.keydown( function () { alert('hi'); target.unbind('keydown'); } );

答案 5 :(得分:0)

我用T.J.克劳德斯回答并提出了这段代码:

(function() {
setInterval(function() {
    var validated = false;
    if ($('#mytextinput').val() !== '' && validated === false) {
        // perform validation or whatever you need

        validated = true;
    }
    else {
        validated = false;
    }
}, 500);
})();