标准浏览器下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动态设置值

评论(0)Web开发网
阅读(794)喜欢(0)JavaScript/Ajax开发技巧