jschange,propertychange,input事件小议
事件 input
2023-06-13 09:14:31 时间
https://github.com/mootools/mootools-core/issues/2170
这个问题来自IE(LTE8)中对checkbox和radiochange事件的实现问题,在IE(LTE8)中测试下来,当你点击一个checkbox或者radio,它的change事件是不会立即触发,除非你让它失去焦点,而在其他标准浏览器中(包括IE9),是点击后立即触发change事件的,这的确是个蛋疼的问题,说到解决方法,倒也比较容易,用IE(LTE8)中元素特有的propertychange事件来处理(IE9已经没这玩意儿了),就能避免上述问题,如:
复制代码代码如下:
这个问题来自IE(LTE8)中对checkbox和radiochange事件的实现问题,在IE(LTE8)中测试下来,当你点击一个checkbox或者radio,它的change事件是不会立即触发,除非你让它失去焦点,而在其他标准浏览器中(包括IE9),是点击后立即触发change事件的,这的确是个蛋疼的问题,说到解决方法,倒也比较容易,用IE(LTE8)中元素特有的propertychange事件来处理(IE9已经没这玩意儿了),就能避免上述问题,如:
checkEl.attachEvent("onpropertychange",function(){
console.log("heyman,Iamchanged");
});
但是这样就认为解决了,是不充分的,因为像checkEl.setAttribute("data-value","god")这样的操作也会触发其propertychange事件,所以我们需要用其event.propertyName来判断下,如:
checkEl.attachEvent("onpropertychange",function(){
if(window.event.propertyName=="checked")
console.log("blahblahblah...");
});
这样算是可以了。由此展开我又测试了下select,其change事件的表现在不同浏览器中一致,没有出现非要先失去焦点的情况。我又测试了下input[type="text"],它的change事件是我们所熟悉的,要失去焦点才会触发,那么当我们想让它一输入东西就立即触发呢,参考之前的例子在IE(LTE8)中,我们可以用propertychange来实现,只不过propertyName的条件变成‘value"而已。在其他标准浏览器中(包括IE9),我们可以用HTML5中的一个标准事件input,如:
inputEl.addEventListener("input",function(event){
console.log("inputeventfired");
},false);
这样我们的每一次输入都会触发此事件,有人会说为什么不用keyup来监听一下,这里有篇文章(原文链接)对此问题进行了阐述,感兴趣的也可以读读。
相关文章
- 前端小技能:利用action-type按钮事件实现批量删除
- IE中输入框绑定input事件触发解析(input事件初始化自动执行问题解决)
- 【js】Input事件
- PKS事件记录详查:Firstout功能块
- Vue多个input框接连focus,blur事件导致页面抖动
- 冠军方案 | 天池心电异常事件预测
- 【Android 事件分发】ItemTouchHelper 事件分发源码分析 ( 绑定 RecyclerView )
- easyUI的onDblClickRow事件总结详解编程语言
- Oracle 等待事件 alter system set dispatcher 官方解释,作用,如何使用及优化方法
- jQuery常用鼠标事件汇总
- 我们能从明尼苏达大学事件吸取什么教训?
- 官方通报“踹门查处补课场所”事件:无防疫保护、无教师资格证
- Linux 事件中心:探索未知之路(事件linux)
- 莆田交警通报蔚来自动驾驶事件:已开展调查 将依法做出责任认定
- javascript事件问题
- jsevent事件的传递与冒泡处理
- IE和Firefox下event事件杂谈
- asp.net(C#)中给控件添加客户端js事件的方法
- 捕获input文本框内容改变事件的js代码
- JQuery文本改变触发事件如聚焦事件、失焦事件
- jquery实现input输入框实时输入触发事件代码
- 让input框实现类似百度的搜索提示(基于jquery事件监听)
- jQuery事件绑定和委托实例