input 输入框内的输入事件详细分析


Posted in Javascript onMarch 17, 2010

1.基础:本次分析原理就是在各个浏览器下input内容变化的时候触发事件的各种不兼容性.在ie下用onpropertychange事件,在其他浏览器里用input事件.
2.用例:对每个浏览器分别测试如下的情况:
?输入英文字母时?开启输入法时?大小写不同时?输入运算符时?按下tab键时?输入法中按下空格时?按下控制键时?复制粘贴时?删除文本时?等等
3.测试开始:(只标出特殊情况,没标出的表示正常触发,每次只触发一次事件)
chrome:
+开启输入法时,可以捕捉到输入事件.
+开启输入法的时候按下空格键,触发两次事件,猜测一次是空格触发的,一次是输入法改变输入框里的文本时触发的.
+开启输入法的时候,按下空格后,立即按下大写锁定,此后所有的输入事件都会被触发两次,原因不知.
+没有开启输入法的时候,方向键不会触发事件,但是开启输入法后,方向键可以触发事件.
+剪切和粘贴都会触发事件.+tab键不处罚事件,开启输入法时,按tab键触发事件.
+按住shift和其他键(例如:数字键),每输入一个字符触发两次事件.
Firefox:
+开启输入法时,不能扑捉到事件,但是按下空格时,可以触发两次事件.
+任何时候方向键都不触发事件.
+开启输入法的时候,按下空格后,立即按下大写锁定,此后所有的输入事件都会被触发两次,原因不知.
+按下tab键的时候不触发事件.++Firefox页面刷新的时候内容会被保留在输入框里.
+按住shift和其他键(例如:数字键),每输入一个字符触发两次事件.
opera:
+正常情况下,在输入框里按下tab键会触发一次事件,但是此后只要不刷新页面,tab键都不会再触发此事件.
+开启输入法后不会触发事件,开启后,方向键和tab键都不触发事件.
+开启输入法时,按下空格只触发一次事件,不会出现触发两次事件的情况.
+粘贴的时候触发事件,剪切的时候不触发
ie:
+输入法不会触发事件,按空格也都是只触发一次,方向键任何时刻都不触发.
+刷新页面的时候内容会留在input里,而且注意,不管input是不是空的,刷新页面后自动触发一次事件.
3.总结.
就一句话,差异很大.
注意input事件可以用在chrome,Firefox,opera里,但是只能用 addEventListener绑定,不能用ontype形式,而onpropertychange可以用on形式,也可以用attachEvent绑定

其它在线演示说明:https://3water.com/tools/keyboard_events.html

Javascript 相关文章推荐
表单提交验证类
Jul 14 Javascript
登陆成功后自动计算秒数执行跳转
Jan 23 Javascript
JavaScript中的原型和继承详解(图文)
Jul 18 Javascript
Jquery 全选反选实例代码
Nov 19 Javascript
js实现获取两个日期之间所有日期的方法
Jun 17 Javascript
AngularJS递归指令实现Tree View效果示例
Nov 07 Javascript
javascript将list转换成树状结构的实例
Sep 08 Javascript
vue移动端html5页面根据屏幕适配的四种解决方法
Oct 19 Javascript
javascript严格模式详解(含严格模式与非严格模式的区别)
Nov 12 Javascript
微信小程序实现简单文字跑马灯
May 26 Javascript
关于vue 结合原生js 解决echarts resize问题
Jul 26 Javascript
微信小程序入门之指南针
Oct 22 Javascript
Jquery Ajax学习实例5 向WebService发出请求,返回泛型集合数据的异步调用
Mar 17 #Javascript
javascript中的undefined 与 null 的区别  补充篇
Mar 17 #Javascript
javascript+iframe 实现无刷新载入整页的代码
Mar 17 #Javascript
js select常用操作控制代码
Mar 16 #Javascript
js实现的日期操作类DateTime函数代码
Mar 16 #Javascript
javascript json2 使用方法
Mar 16 #Javascript
jQuery 选择器理解
Mar 16 #Javascript
You might like
PHP统一页面编码避免乱码问题
2015/04/09 PHP
YiiFramework入门知识点总结(图文教程)
2015/12/28 PHP
php-beanstalkd消息队列类实例分享
2017/07/19 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
2017/12/25 PHP
php 的多进程操作实践案例分析
2020/02/28 PHP
jQuery 学习第五课 Ajax 使用说明
2010/05/17 Javascript
jQuery学习总结之元素的相对定位和选择器(持续更新)
2011/04/26 Javascript
基于jquery的防止大图片撑破页面的实现代码(立即缩放)
2011/10/24 Javascript
jquery实现简单的拖拽效果实例兼容所有主流浏览器
2013/06/21 Javascript
jquery ajax对特殊字符进行转义防止js注入使用示例
2013/11/21 Javascript
基于JS判断iframe是否加载成功的方法(多种浏览器)
2016/05/13 Javascript
jQuery on()方法绑定动态元素的点击事件实例代码浅析
2016/06/16 Javascript
JS使用正则截取两个字符串之间的字符串实现方法详解
2017/01/06 Javascript
js实现自动轮换选项卡
2017/01/13 Javascript
Kindeditor单独调用单图上传增加预览功能的实例
2017/07/31 Javascript
webpack4的迁移的使用方法
2018/05/25 Javascript
小程序实现单选多选功能
2018/11/04 Javascript
Electron 如何调用本地模块的方法
2019/02/01 Javascript
详解Webpack如何引入CDN链接来优化编译后的体积
2019/06/21 Javascript
vue服务端渲染操作简单入门实例分析
2019/08/28 Javascript
Vue3 源码导读(推荐)
2019/10/14 Javascript
跟老齐学Python之大话题小函数(2)
2014/10/10 Python
python的unittest测试类代码实例
2017/12/07 Python
对numpy中的transpose和swapaxes函数详解
2018/08/02 Python
python高效过滤出文件夹下指定文件名结尾的文件实例
2018/10/21 Python
python每天定时运行某程序代码
2019/08/16 Python
Python使用enumerate获取迭代元素下标
2020/02/03 Python
Python之字符串的遍历的4种方式
2020/12/08 Python
shell程序如何生命变量?shell变量是弱变量吗?
2014/11/10 面试题
个人优缺点自我评价
2014/01/27 职场文书
项目投资合作意向书
2014/07/29 职场文书
2014年度考核工作总结
2014/12/24 职场文书
开除通知书范本
2015/04/25 职场文书
Redis5之后版本的高可用集群搭建的实现
2021/04/27 Redis
jackson json序列化实现首字母大写,第二个字母需小写
2021/06/29 Java/Android
一文带你探究MySQL中的NULL
2021/11/11 MySQL