根据我的经验,input type="text" onchange事件通常只发生在你离开(模糊)控件之后。
有办法迫使浏览器触发onchange每次文本字段内容的变化?如果不是,那么“手动”跟踪这种情况的最佳方法是什么?
使用onkey* events是不可靠的,因为您可以右键单击字段并选择粘贴,这将在没有任何键盘输入的情况下更改字段。
setTimeout是唯一的方法吗?丑:-)
根据我的经验,input type="text" onchange事件通常只发生在你离开(模糊)控件之后。
有办法迫使浏览器触发onchange每次文本字段内容的变化?如果不是,那么“手动”跟踪这种情况的最佳方法是什么?
使用onkey* events是不可靠的,因为您可以右键单击字段并选择粘贴,这将在没有任何键盘输入的情况下更改字段。
setTimeout是唯一的方法吗?丑:-)
当前回答
我认为在2018年最好使用输入事件。
-
正如WHATWG规范所描述的(https://html.spec.whatwg.org/multipage/indices.html#event-input-input):
当用户更改值时向控件触发(参见 改变事件)
-
下面是一个如何使用它的例子:
<input type="text" oninput="handleValueChange()">
其他回答
这些天听oninput。感觉就像在改变,而不需要失去对元素的关注。它是HTML5。
除了IE8及以下版本,所有人(甚至是移动设备)都支持它。为IE添加onpropertychange。我是这样使用的:
const source = document.getElementById('source'); const result = document.getElementById('result'); const inputHandler =函数(e) { 结果。innerHTML = e.target.value; } 源。addEventListener(“输入”,inputHandler); 源。addEventListener (propertychange, inputHandler);//用于IE8 // Firefox/Edge18-/IE9+不启动<select><option> . // / /源。addEventListener(‘改变’,inputHandler); <输入id = "源" > < div id = "结果" > < / div >
如果你只使用Internet Explorer,你可以使用这个:
<input type="text" id="myID" onpropertychange="TextChange(this)" />
<script type="text/javascript">
function TextChange(tBox) {
if(event.propertyName=='value') {
//your code here
}
}
</script>
希望这能有所帮助。
下面的代码为我工作良好的Jquery 1.8.3
HTML: <输入类型=“文本”id=“myId”/>
Javascript/JQuery:
$("#myId").on('change keydown paste input', function(){
doSomething();
});
方法一:为输入添加事件监听器:
element.addEventListener("input", myFunction);
方法2:用JavaScript定义oninput属性:
element.oninput = function()
{
myFunction();
};
方法3:用HTML定义oninput属性:
<input type="text" oninput="myFunction();">
我认为在2018年最好使用输入事件。
-
正如WHATWG规范所描述的(https://html.spec.whatwg.org/multipage/indices.html#event-input-input):
当用户更改值时向控件触发(参见 改变事件)
-
下面是一个如何使用它的例子:
<input type="text" oninput="handleValueChange()">