当按键更改文本框的输入时,我想做一些事情.我认为按键事件将是最好的,但如何知道是否引起了变化?我需要过滤出像按下箭头键或修饰符的东西…我不认为硬编码所有的值是最好的方法.
那么该怎么办呢?
解决方法
在大多数浏览器中,您可以将
HTML5输入事件用于文本类型< input>内容:
$("#testBox").on("input",function() { alert("Value changed!"); });
这在IE< 9,但有一个解决方法:propertychange事件.
$("#testBox").on("propertychange",function(e) { if (e.originalEvent.propertyName == "value") { alert("Value changed!"); } });
IE 9支持两者,所以在那个浏览器中,最好更喜欢基于标准的输入事件.这样可以方便地触发,所以我们可以在第一次输入触发时删除属性更改的处理程序.
把它放在一起(jsFiddle):
var propertyChangeUnbound = false; $("#testBox").on("propertychange",function(e) { if (e.originalEvent.propertyName == "value") { alert("Value changed!"); } }); $("#testBox").on("input",function() { if (!propertyChangeUnbound) { $("#testBox").unbind("propertychange"); propertyChangeUnbound = true; } alert("Value changed!"); });