js改变value值不能触发-oninput事件存在的一个缺陷

欢欢欢欢 发表于 2013-7-26 16:04

在网上查了一下,官方对oninput的定义如下:

window对象上input事件的事件句柄,当<input> 元素的value属性值由输入设备改变时,就会触发input事件

该事件是冒泡的.除了在window对象上, <input>文本框元素也有input事件.

参考链接:https://developer.mozilla.org/zh-CN/docs/Web/API/GlobalEventHandlers.oninput

上面红体加大的这句话告诉了一个事实,就是使用javascript来改变<input>的value值的时候是不会激发oninput事件的

但是在低版本IE中(IE9以下),oninput事件的替代品onpropertychange是可以做到这一点的,从字面意思上就可以看出来,只要属性改变就激发,奈何只有IE支持。

目前对于这种情况的解决办法有限,一般情况下,在要求不高的场合,是可以忽略不计的。如果有这方面的要求,那就在输入框加上一个定时器,来实时监控input和textarea的变化。