根据我的经验,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();
});

其他回答

“输入”对我很有用。

var searchBar  = document.getElementById("searchBar");
searchBar.addEventListener("input", PredictSearch, false);

下面的代码为我工作良好的Jquery 1.8.3

HTML: <输入类型=“文本”id=“myId”/>

Javascript/JQuery:

$("#myId").on('change keydown paste input', function(){
      doSomething();
});

您也可以使用按下键、按上键和按下键事件。

我有一个类似的需求(twitter样式的文本字段)。使用onkeyup和onchange。Onchange实际上负责在字段失去焦点时的鼠标粘贴操作。

[更新]在HTML5或更高版本中,使用oninput获取实时字符修改更新,如上面的其他答案所解释。

使用oninput而不是onchange。

index . html

<html>
  <head>
    <title>title here</title>
    <script src="index.js"></script>
  </head>
  <body>
    <input oninput="onclickhandler(this)"></input>
  </body>
</html>

script.js

function onclickhandler(e) {
  console.log(e.value);
}