根据我的经验,input type="text" onchange事件通常只发生在你离开(模糊)控件之后。
有办法迫使浏览器触发onchange每次文本字段内容的变化?如果不是,那么“手动”跟踪这种情况的最佳方法是什么?
使用onkey* events是不可靠的,因为您可以右键单击字段并选择粘贴,这将在没有任何键盘输入的情况下更改字段。
setTimeout是唯一的方法吗?丑:-)
根据我的经验,input type="text" onchange事件通常只发生在你离开(模糊)控件之后。
有办法迫使浏览器触发onchange每次文本字段内容的变化?如果不是,那么“手动”跟踪这种情况的最佳方法是什么?
使用onkey* events是不可靠的,因为您可以右键单击字段并选择粘贴,这将在没有任何键盘输入的情况下更改字段。
setTimeout是唯一的方法吗?丑:-)
当前回答
您也可以使用按下键、按上键和按下键事件。
其他回答
下面的代码为我工作良好的Jquery 1.8.3
HTML: <输入类型=“文本”id=“myId”/>
Javascript/JQuery:
$("#myId").on('change keydown paste input', function(){
doSomething();
});
2018年到了,我是这么做的:
$(inputs).on('change keydown paste input propertychange click keyup blur',handler);
如果你能指出这种方法的缺陷,我会很感激。
您也可以使用按下键、按上键和按下键事件。
更新:
参见Another answer(2015)。
2009年原文答案:
你想让onchange事件触发按下键,模糊和粘贴?这是魔法。
如果你想在他们输入时跟踪更改,使用"onkeydown"。如果你需要用鼠标捕捉粘贴操作,请使用“onpaste”(IE, FF3)和“oninput”(FF, Opera, Chrome, Safari1)。
在Safari上<textarea>破碎。使用textInput代替
我有一个类似的需求(twitter样式的文本字段)。使用onkeyup和onchange。Onchange实际上负责在字段失去焦点时的鼠标粘贴操作。
[更新]在HTML5或更高版本中,使用oninput获取实时字符修改更新,如上面的其他答案所解释。