a 的值<input type="text">可以通过多种方式改变,包括:
- 按键
 - 复制粘贴
 - 用 JavaScript 修改
 - 由浏览器或工具栏自动完成
 
我希望我的 JavaScript 函数在它发生变化时被调用(使用当前输入值)。而且我希望它立即被调用,而不仅仅是在输入失去焦点时。
我正在寻找在所有浏览器中执行此操作的最干净和最健壮的方法(最好使用 jQuery)。
a 的值<input type="text">可以通过多种方式改变,包括:
我希望我的 JavaScript 函数在它发生变化时被调用(使用当前输入值)。而且我希望它立即被调用,而不仅仅是在输入失去焦点时。
我正在寻找在所有浏览器中执行此操作的最干净和最健壮的方法(最好使用 jQuery)。
这个 jQuery 代码可以捕捉到任何元素的即时变化,并且应该适用于所有浏览器:
 $('.myElements').each(function() {
   var elem = $(this);
   // Save current value of element
   elem.data('oldVal', elem.val());
   // Look for changes in the value
   elem.bind("propertychange change click keyup input paste", function(event){
      // If value has changed...
      if (elem.data('oldVal') != elem.val()) {
       // Updated stored value
       elem.data('oldVal', elem.val());
       // Do action
       ....
     }
   });
 });
jQuery >= 1.9 的实时奇特解决方案
$("#input-id").on("change keyup paste", function(){
    dosomething();
})
如果您还想检测“点击”事件,只需:
$("#input-id").on("change keyup paste click", function(){
    dosomething();
})
如果你正在使用jQuery <= 1.4,只需使用live代替on。
不幸的是,我认为setInterval获奖了:
<input type=text id=input_id />
<script>
setInterval(function() { ObserveInputValue($('#input_id').val()); }, 100);
</script>
这是最干净的解决方案,只有 1 行代码。它也是最强大的,因为您不必担心input可以获得值的所有不同事件/方式。
在这种情况下,使用“setInterval”的缺点似乎并不适用:
oninput在大多数理智的浏览器中绑定到事件似乎工作正常。IE9 也支持它,但实现有问题(删除字符时不会触发该事件)。
在 jQuery 1.7+ 版本中,该on方法对于绑定到这样的事件很有用:
$(".inputElement").on("input", null, null, callbackFunction);
2017 年回答:输入事件对于比 IE8 更新的任何东西都这样做。
$(el).on('input', callback)