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 相关文章推荐
JMenuTab简单使用说明
Mar 13 Javascript
document.getElementById的简写方式(获取id对象的简略写法)
Sep 10 Javascript
js原型继承的两种方法对比介绍
Mar 30 Javascript
浅谈javascript中createElement事件
Dec 05 Javascript
JavaScript的jQuery库插件的简要开发指南
Aug 12 Javascript
JavaScript实现点击按钮复制指定区域文本(推荐)
Nov 25 Javascript
Vue2.0使用过程常见的一些问题总结学习
Apr 10 Javascript
jQuery正则验证注册页面经典实例
Jun 10 jQuery
在vue中添加Echarts图表的基本使用教程
Nov 22 Javascript
Vue-cli项目获取本地json文件数据的实例
Mar 07 Javascript
vue.js 添加 fastclick的支持方法
Aug 28 Javascript
使用Jenkins部署React项目的方法步骤
Mar 11 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 设计模式之 工厂模式
2008/12/19 PHP
php安装xdebug/php安装pear/phpunit详解步骤(图)
2013/12/22 PHP
PHP版微信小店接口开发实例
2016/11/12 PHP
thinkPHP微信分享接口JSSDK用法实例
2017/07/07 PHP
PHP空值检测函数与方法汇总
2017/11/19 PHP
JavaScript 浮点数运算 精度问题
2009/10/06 Javascript
JavaScript中获取未知对象属性的代码
2011/04/27 Javascript
jQuery实现异步获取json数据的2种方式
2014/08/29 Javascript
jQuery结合AJAX之在页面滚动时从服务器加载数据
2015/06/30 Javascript
js实现仿网易点击弹出提示同时背景变暗效果
2015/08/13 Javascript
JS中常用的输出方式(五种)
2016/06/12 Javascript
基于JS实现的随机数字抽签实例
2016/12/08 Javascript
ionic实现底部分享功能
2017/05/11 Javascript
用原生JS实现简单的多选框功能
2017/06/12 Javascript
js中实例与对象的区别讲解
2019/01/21 Javascript
vue项目中将element-ui table表格写成组件的实现代码
2019/06/12 Javascript
vue+element实现图片上传及裁剪功能
2020/06/29 Javascript
使用Python操作MySQL的一些基本方法
2015/08/16 Python
Python实现周期性抓取网页内容的方法
2015/11/04 Python
对python numpy数组中冒号的使用方法详解
2018/04/17 Python
python3+django2开发一个简单的人员管理系统过程详解
2019/07/23 Python
python mqtt 客户端的实现代码实例
2019/09/25 Python
python 穷举指定长度的密码例子
2020/04/02 Python
opencv 图像轮廓的实现示例
2020/07/08 Python
Python常用模块函数代码汇总解析
2020/08/31 Python
英国时尚泳装品牌:Maru Swimwear
2019/10/06 全球购物
荷兰时尚精品店:Labels Fashion
2020/03/22 全球购物
sort命令的作用和用法
2013/08/25 面试题
探亲邀请信范文
2014/01/30 职场文书
运动会邀请函范文
2014/02/06 职场文书
校园安全广播稿
2014/02/08 职场文书
大学生社会实践自我鉴定
2014/03/24 职场文书
酒店管理毕业生自荐信
2014/05/25 职场文书
优秀应届毕业生自荐书
2014/06/29 职场文书
2014年秋季开学典礼致辞
2014/08/02 职场文书
名人演讲稿范文
2014/09/16 职场文书