js change,propertychange,input事件小议


Posted in Javascript onDecember 20, 2011

https://github.com/mootools/mootools-core/issues/2170

这个问题来自IE(LTE8)中对checkbox和radio change事件的实现问题,在IE(LTE8)中测试下来,当你点击一个checkbox或者radio,它的change事件是不会立即触发,除非你让它失去焦点,而在其他标准浏览器中(包括IE9),是点击后立即触发change事件的,这的确是个蛋疼的问题,说到解决方法,倒也比较容易,用IE(LTE8)中元素特有的propertychange事件来处理(IE9已经没这玩意儿了),就能避免上述问题,如:

checkEl.attachEvent('onpropertychange', function() { 
console.log('hey man, I am changed'); 
});

但是这样就认为解决了,是不充分的,因为像checkEl.setAttribute('data-value', 'god')这样的操作也会触发其propertychange事件,所以我们需要用其event.propertyName来判断下,如:
checkEl.attachEvent('onpropertychange', function() { 
if(window.event.propertyName == 'checked') 
console.log('blah blah blah...'); 
});

这样算是可以了。由此展开我又测试了下select,其change事件的表现在不同浏览器中一致,没有出现非要先失去焦点的情况。我又测试了下input[type="text"],它的change事件是我们所熟悉的,要失去焦点才会触发,那么当我们想让它一输入东西就立即触发呢,参考之前的例子在IE(LTE8)中,我们可以用propertychange来实现,只不过propertyName的条件变成‘value'而已。在其他标准浏览器中(包括IE9),我们可以用HTML5中的一个标准事件input, 如:
inputEl.addEventListener('input', function(event) { 
console.log('input event fired'); 
}, false);

这样我们的每一次输入都会触发此事件,有人会说为什么不用keyup来监听一下, 这里有篇文章(原文链接)对此问题进行了阐述,感兴趣的也可以读读。
Javascript 相关文章推荐
js null,undefined,字符串小结
Aug 21 Javascript
js实现简单的星级选择器提交效果适用于评论等
Oct 18 Javascript
js substring从右边获取指定长度字符串(示例代码)
Dec 23 Javascript
创建js对象和js类的方法汇总
Dec 24 Javascript
JS实现带提示的星级评分效果完整实例
Oct 30 Javascript
JavaScript实现页面跳转的几种常用方式
Nov 28 Javascript
JS实现的表格操作类详解(添加,删除,排序,上移,下移)
Dec 22 Javascript
基于JavaScript实现手机短信按钮倒计时(超简单)
Dec 30 Javascript
PassWord输入框代码分享
Jun 07 Javascript
jQuery中 $ 符号的冲突问题及解决方案
Nov 04 Javascript
Bootstrap Table使用整理(二)
Jun 09 Javascript
微信小程序后台持续定位功能使用详解
Aug 23 Javascript
JavaScript面向对象设计二 构造函数模式
Dec 20 #Javascript
Javascript面向对象设计一 工厂模式
Dec 20 #Javascript
用JavaScript仿PS里的羽化效果代码
Dec 20 #Javascript
javascript判断iphone/android手机横竖屏模式的函数
Dec 20 #Javascript
五段实用的js高级技巧
Dec 20 #Javascript
更换select下拉菜单背景样式的实现代码
Dec 20 #Javascript
在iframe里的页面编写js,实现在父窗口上创建动画效果展开和收缩的div(不变动iframe父窗口代码)
Dec 20 #Javascript
You might like
PHP 输出URL的快捷方式示例代码
2013/09/22 PHP
phplot生成图片类用法详解
2015/01/06 PHP
数理公式,也可以这么唯美
2021/03/10 无线电
JS中toFixed()方法引起的问题如何解决
2012/11/20 Javascript
Js如何判断客户端是PC还是手持设备简单分析
2012/11/22 Javascript
js模拟滚动条(横向竖向)
2013/02/22 Javascript
7款风格新颖的jQuery/CSS3菜单导航分享
2013/04/23 Javascript
使用jQuery将多条数据插入模态框的实现代码
2014/10/08 Javascript
浅谈Javascript变量作用域问题
2014/12/16 Javascript
javascript日期比较方法实例分析
2016/06/17 Javascript
jQuery实现导航高亮的方法【附demo源码下载】
2016/11/09 Javascript
AngularJS实现用户登录状态判断的方法(Model添加拦截过滤器,路由增加限制)
2016/12/12 Javascript
vue 双向数据绑定的实现学习之监听器的实现方法
2018/11/30 Javascript
Angular 2使用路由自定义弹出组件toast操作示例
2019/05/10 Javascript
vue 检测用户上传图片宽高的方法
2020/02/06 Javascript
学前端,css与javascript重难点浅析
2020/06/11 Javascript
Vant 在vue-cli 4.x中按需加载操作
2020/11/05 Javascript
[01:16:37]【全国守擂赛】第三周决赛 Dark Knight vs. 一个弱队
2020/05/04 DOTA
Python解释执行原理分析
2014/08/22 Python
Python装饰器原理与用法分析
2018/04/30 Python
Python wxpython模块响应鼠标拖动事件操作示例
2018/08/23 Python
用python建立两个Y轴的XY曲线图方法
2019/07/08 Python
Python完全识别验证码自动登录实例详解
2019/11/24 Python
Python中用pyinstaller打包时的图标问题及解决方法
2020/02/17 Python
美国演唱会订票网站:Ticketmaster美国
2017/10/05 全球购物
澳大利亚最受欢迎的女士度假服装:Kabana Shop
2020/10/10 全球购物
性能测试工程师的面试题
2015/02/20 面试题
广告设计专业自荐信范文
2013/11/14 职场文书
校园招聘策划书
2014/01/09 职场文书
《美丽的彩虹》教学反思
2014/02/25 职场文书
节能环保演讲稿
2014/08/28 职场文书
党的群众路线教育实践活动个人对照检查材料(教师)
2014/11/04 职场文书
小升初自荐信怎么写
2015/03/26 职场文书
毕业班班主任工作总结2015
2015/07/23 职场文书
Python中非常使用的6种基本变量的操作与技巧
2022/03/22 Python
分享五个Node.js开发的优秀实践 
2022/04/07 NodeJs