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