js change,propertychange,input事件小议

 更新时间:2011年12月20日 01:27:20   作者:  
github上关于mootools一个issue的讨论很有意思,所以就想测试记录下。感兴趣的可以点击原页面看看
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来监听一下, 这里有篇文章(原文链接)对此问题进行了阐述,感兴趣的也可以读读。

相关文章

  • 常用js字符串判断方法整理

    常用js字符串判断方法整理

    js常用方法及字符串的常用判断方法都是在工作中经常用到的,在本文整理了一些,感兴趣的朋友可以参考下
    2013-10-10
  • javascript 数组排序函数

    javascript 数组排序函数

    javascript的数组排序函数 sort方法,默认是按照ASCII 字符顺序进行升序排列。
    2009-08-08
  • 函数window.open实现关闭所有的子窗口

    函数window.open实现关闭所有的子窗口

    这篇文章主要介绍了函数window.open实现关闭所有的子窗口的相关资料,需要的朋友可以参考下。
    2015-08-08
  • 微信小程序支付前端源码

    微信小程序支付前端源码

    这篇文章主要为大家详细介绍了微信小程序支付前端源码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • layui动态加载多表头的实例

    layui动态加载多表头的实例

    今天小编就为大家分享一篇layui动态加载多表头的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09
  • 基于JavaScript实现轮播图代码

    基于JavaScript实现轮播图代码

    在前端程序开发中,经常会实现js轮播图的效果,怎么实现的呢?下面小编给大家分享基于基于JavaScript实现轮播图代码 ,非常不错,感兴趣的朋友可以参考下
    2016-07-07
  • ES6箭头函数和扩展实例分析

    ES6箭头函数和扩展实例分析

    这篇文章主要介绍了ES6箭头函数和扩展,结合实例形式分析了ES6箭头函数和扩展基本功能、用法及操作注意事项,需要的朋友可以参考下
    2020-05-05
  • layui问题之自动滚动二级iframe页面到指定位置的方法

    layui问题之自动滚动二级iframe页面到指定位置的方法

    今天小编就为大家分享一篇layui问题之自动滚动二级iframe页面到指定位置的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09
  • JSON遍历方式实例总结

    JSON遍历方式实例总结

    这篇文章主要介绍了JSON遍历方式,结合实例形式总结分析了JavaScript操作json实现遍历的常用技巧,并给出了实例总结,需要的朋友可以参考下
    2015-12-12
  • JS将unicode码转中文方法

    JS将unicode码转中文方法

    本篇文章主要介绍了JS将unicode码转中文方法的相关知识,具有很好的参考价值。下面跟着小编一起来看下吧
    2017-05-05

最新评论