繁体   English   中英

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

[英]javascript\jquery: Event that fires when textbox changes

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

不幸的是,没有一个。 有一天,所有浏览器都支持textinput事件和/或HTML5 input事件 ,但目前并非所有浏览器都支持,以及那些确实存在各种错误的浏览器 您可以使用事件的组合,但是您必须自己处理每个更改的响应,并且总是有可能无法在某处覆盖某些浏览器。

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

我使用了TJ Crowders的答案并提出了这段代码:

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

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

您可以绑定keyup事件。

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

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

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

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

除了另一个答案中概述的bind方法,您还可以这样做:

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

您可以使用jQuery keydown或keyup。

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

现在,因为你只想被调用一次,所以你要做的就是在调用之后解除绑定:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM