标准浏览器下oninput如何响应javascript动态设置值
在标准浏览器下,如firefox或者chrome,oninput事件只有输入或者粘贴剪裁的时候才会响应,而javascript动态设置控件的值时不响应oninput事件,而ie浏览器下的onpropertychange事件则会响应javascript动态设置控件内容时。
要解决oninput不响应javascript动态设置值,可以使用__defineSetter__重新定义value属性值,然后调用oninput事件。
代码如下
<input id="t1"/ > <script> window.onload = function () { var t1 = document.getElementById('t1'); if (t1.__defineSetter__) { t1.__defineSetter__('value', function (v) { this.setAttribute('value', v);//注意这里,要使用setAttribute来设置value值,不能this.value=v,要不会死循环。如果注释掉这句,无法修改input的value值 f.call(this); }); } else { t1.onpropertychange = f; } setTimeout(function(){ t1.value = "xxxxxx";},2000);//2s后设置值 } function f() { alert('change') } </script>
加支付宝好友偷能量挖...
原创文章,转载请注明出处:标准浏览器下oninput如何响应javascript动态设置值