oninput、onchange与onpropertychange事件的用法和区别
来源:互联网 发布:淘宝seo搜索优化 编辑:程序博客网 时间:2024/05/21 06:23
参考 freshlover的专栏 的文章
博客园 学以致用讲解
概述
前端页面开发的很多情况下都需要实时监听文本框输入,比如腾讯微博编写140字的微博时输入框hu9i动态显示还可以输入的字数。过去一般都使用onchange/onkeyup/onkeypress/onkeydown实现,但是这存在着一些不好的用户体验。比如onchange事件只在键盘或者鼠标操作改变对象属性,且失去焦点时触发,脚本触发无效;而onkeydown/onkeypress/onkeyup在处理复制、粘贴、拖拽、长按键(按住键盘不放)等细节上并不完善。
onpropertychange属性可在某些情况下解决上面存在的问题,不用考虑是否失去焦点,不管js操作还是键盘鼠标手动操作,只要HTML元素属性发生改变即可立即捕获到。遗憾的是,onpropertychange为IE专属的。其他浏览器下如果想要实现这一实时监听的需求,就要用到HTML5中的标准事件oninput,不过IE9以下的浏览器是不支持oninput事件的。
例1、对支持oninput的浏览器用oninput,其他浏览器(IE6/7/8)使用onpropertychange:
var testinput = document.createElement('input'); if('oninput' in testinput){ object.addEventListener("input",fn,false); }else{ object.onpropertychange = fn; }
例2、对所有ie使用onpropertychange,其他浏览器用oninput:
var ie = !!window.ActiveXObject; if(ie){ object.onpropertychange = fn; }else{ object.addEventListener("input",fn,false); }
汇总onchange onpropertychange 和oninput事件的区别:
- 1.onchange 在内容发生改变的时候,并且失去焦点的时候触发, onpropertychange则是在实时触发,就是每个字符的增加和触发,通过js触发也会发生改变,但是该事件是IE转有
- 2、oninput事件与onpropertychange事件的区别:
oninput事件是IE之外的大多数浏览器支持的事件,在value改变时触发,实时的,即每增加或删除一个字符就会触发,然而通过js改变value时,却不会触发;onpropertychange事件是任何属性改变都会触发的,而oninput却只在value改变时触发,oninput要通过addEventListener()来注册,onpropertychange注册方式跟一般事件一样。(此处都是指在js中动态绑定事件,以实现内容与行为分离) - 3、oninput与onpropertychange失效的情况:
(1)oninput事件:a). 当脚本中改变value时,不会触发;b).从浏览器的自动下拉提示中选取时,不会触发。
(2)onpropertychange事件:当input设置为disable=true后,onpropertychange不会触发。
阅读全文
0 0
- 总结oninput、onchange与onpropertychange事件的用法和区别
- 总结oninput、onchange与onpropertychange事件的用法和区别
- 总结oninput、onchange与onpropertychange事件的用法和区别
- 总结oninput、onchange与onpropertychange事件的用法和区别
- 总结oninput、onchange与onpropertychange事件的用法和区别
- 总结oninput、onchange与onpropertychange事件的用法和区别
- oninput、onchange与onpropertychange事件的用法和区别
- oninput、onchange与onpropertychange事件的用法和区别
- oninput、onchange与onpropertychange事件的用法和区别
- oninput、onchange与onpropertychange事件的用法和区别
- JavaScript 总结onchange、onpropertychange、oninput事件的用法和区别
- oninput、onchange和onpropertychange事件的区别
- oninput,onpropertychange,onchange的用法和区别
- oninput,onpropertychange,onchange的用法和区别
- oninput,onpropertychange,onchange的用法和区别
- oninput,onpropertychange,onchange的用法和区别
- oninput,onpropertychange,onchange的用法和区别
- oninput,onpropertychange,onchange的用法和区别
- Android 画笔演示功能的实现
- Android recyclerView实现商品规格选择
- 国际化程序
- NDK LOG 输出
- Java面向对象编程之多态(polymorphism)
- oninput、onchange与onpropertychange事件的用法和区别
- 1069. 微博转发抽奖(20)
- 关于AJAX的小点(搜索的)
- 写一个小程序实现win系统定时锁屏
- ubuntu14.04安装opencv3.1.0遇ICV文件校验问题
- 网页性能优化
- scrapy操作MySQL数据库
- 【预习笔记】为了应试而学习Spring-AOP相关
- centos7下docker报错处理