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 小贴士一星期合集
Apr 07 Javascript
jquery.boxy插件的iframe扩展代码
Jul 02 Javascript
关于JAVASCRIPT urldecode URL解码的问题
Jan 08 Javascript
JQuery中form验证出错信息的查看方法
Oct 08 Javascript
Jquery 类网页微信二维码图块滚动效果具体实现
Oct 14 Javascript
JS实现闪动的title消息提醒效果
Jun 20 Javascript
js+css简单实现网页换肤效果
Dec 29 Javascript
如何检测JavaScript的各种类型
Jul 30 Javascript
详解vue父子模版嵌套案例
Mar 04 Javascript
Vue如何引入远程JS文件
Apr 20 Javascript
Vue商品控件与购物车联动效果的实例代码
Jul 21 Javascript
微信小程序批量上传图片到七牛(推荐)
Dec 19 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垃圾回收机制引用计数器概念分析
2013/06/24 PHP
宝塔面板在NGINX环境中TP5.1如何运行?
2021/03/09 PHP
JS 继承实例分析
2008/11/04 Javascript
js下用层来实现select的title提示属性
2010/02/23 Javascript
菜鸟javascript基础资料整理3 正则
2010/12/06 Javascript
基于jQuery实现的Ajax 验证用户名是否存在的实现代码
2011/04/06 Javascript
javascript小数四舍五入多种方法实现
2012/12/23 Javascript
JSON 的正确用法探讨:Pyhong、MongoDB、JavaScript与Ajax
2016/05/15 Javascript
老生常谈的跨域处理
2017/01/11 Javascript
js cookie实现记住密码功能
2017/01/17 Javascript
学习使用Bootstrap栅格系统
2017/05/11 Javascript
理解 Node.js 事件驱动机制的原理
2017/08/16 Javascript
Angularjs 1.3 中的$parse实例代码
2017/09/14 Javascript
利用js将ajax获取到的后台数据动态加载至网页中的方法
2018/08/08 Javascript
使用p5.js实现动态GIF图片临摹重现
2019/10/23 Javascript
了不起的11个JavaScript代码重构最佳实践小结
2021/01/11 Javascript
python使用xmlrpc实例讲解
2013/12/17 Python
Python实现二维数组按照某行或列排序的方法【numpy lexsort】
2017/09/22 Python
Python网络编程基于多线程实现多用户全双工聊天功能示例
2018/04/10 Python
Python实现计算字符串中出现次数最多的字符示例
2019/01/21 Python
利用python实现对web服务器的目录探测的方法
2019/02/26 Python
python脚本之一键移动自定格式文件方法实例
2019/09/02 Python
python retrying模块的使用方法详解
2019/09/25 Python
基于Python中isfile函数和isdir函数使用详解
2019/11/29 Python
python接入支付宝的实例操作
2020/07/20 Python
如何基于python把文字图片写入word文档
2020/07/31 Python
CSS3的first-child选择器实战攻略
2016/04/28 HTML / CSS
Oracle中delete,truncate和drop的区别
2016/05/05 面试题
优秀员工自荐信范文
2013/10/05 职场文书
工程管理专业个人求职信范文
2013/12/07 职场文书
安全检查汇报材料
2014/12/26 职场文书
研究生就业推荐表导师评语
2014/12/31 职场文书
500字小学生检讨书
2015/02/19 职场文书
cf战队宣传语
2015/07/13 职场文书
2015年中秋节主持词
2015/07/30 职场文书
MySQL数据库安装方法与图形化管理工具介绍
2022/05/30 MySQL