js动态改变文本域触发onchange事件

  今天在改造百度ueditor编辑器插入图片功能的时候,发现用键盘修改文本域时能触发事件,但是用js动态去回写值时,IE浏览器可以正常触发,但是FF和其他浏览器均不支持。

  于是上网去了很多论坛逛了下,发现都没有合适的解决办法,IE浏览器之所以可以是因为它有他的专利:  

input.onpropertychange=function(){}

在火狐和其他浏览器使用如下方法

input.addEventListener("input", function(){  
  //触发此事件的方法
},false)


来触发onchange事件,用这招在用键盘输入文字改变文本域时可以触发onchange事件,但是动态给文本框赋值怎么也触发不了。纠结了很久,脑子冒出一个很傻的办法,给input再添加一个监听,也就是说给文本框动态赋值后,立即添加onfocus,即input.focus();对文本框聚焦。然后给文本框再注册一个onfocus监听来处理和上面监听一样的方法。代码如下:

input.addEventListener("focus", function(){
      //触发此事件的方法,与上面一致
},false);

这样就解决了各个浏览器之间的差异,方法比较傻,但是把问题给解决了,写下来和大家分享下。

大家如果有什么更好的解决办法,欢迎留言交互。谢谢!^^

posted @ 2012-08-15 12:55  decodeArt  阅读(1852)  评论(0编辑  收藏  举报