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 相关文章推荐
AngularJS iframe跨域打开内容时报错误的解决办法
Jan 26 Javascript
JavaScript使用指针操作实现约瑟夫问题实例
Apr 07 Javascript
jquery关于事件冒泡和事件委托的技巧及阻止与允许事件冒泡的三种实现方法
Nov 27 Javascript
全面总结Javascript对数组对象的各种操作
Jan 22 Javascript
Vue实现购物车功能
Apr 27 Javascript
js学习心得_一个简单的动画库封装tween.js
Jul 14 Javascript
vue 实现数字滚动增加效果的实例代码
Jul 06 Javascript
JS使用Dijkstra算法求解最短路径
Jan 17 Javascript
JavaScript实现密码强度实时验证
Mar 18 Javascript
Vue如何基于vue-i18n实现多国语言兼容
Jul 17 Javascript
ant design vue导航菜单与路由配置操作
Oct 28 Javascript
在vant 中使用cell组件 定义图标该图片和位置操作
Nov 02 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函数
2017/01/15 PHP
phpstorm 配置xdebug的示例代码
2019/03/31 PHP
PHP接口类(interface)的定义、特点和应用示例
2020/05/18 PHP
javascript学习笔记(八) js内置对象
2012/06/19 Javascript
jQuery常见开发技巧详细整理
2013/01/02 Javascript
JavaScript onkeydown事件入门实例(键盘某个按键被按下)
2014/10/17 Javascript
jquery判断复选框是否选中进行答题提示特效
2015/12/10 Javascript
js 提交form表单和设置form表单请求路径的实现方法
2016/10/25 Javascript
js格式化时间的简单实例
2016/11/27 Javascript
Bootstrap布局之栅格系统学习笔记
2017/05/04 Javascript
vue事件修饰符和按键修饰符用法总结
2017/07/25 Javascript
Vue实现简单分页器
2018/12/29 Javascript
JavaScript数据结构与算法之基本排序算法定义与效率比较【冒泡、选择、插入排序】
2019/02/21 Javascript
Vue组件系列开发之模态框
2019/04/18 Javascript
BootstrapValidator实现表单验证功能
2019/11/08 Javascript
原生JavaScript创建不可变对象的方法简单示例
2020/05/07 Javascript
JavaScript oncopy事件用法实例解析
2020/05/13 Javascript
Python2.7基于笛卡尔积算法实现N个数组的排列组合运算示例
2017/11/23 Python
python 3.5实现检测路由器流量并写入txt的方法实例
2017/12/17 Python
TensorFlow深度学习之卷积神经网络CNN
2018/03/09 Python
Python cookbook(数据结构与算法)找出序列中出现次数最多的元素算法示例
2018/03/15 Python
python 重命名轴索引的方法
2018/11/10 Python
tensorflow模型转ncnn的操作方式
2020/05/25 Python
使用opencv识别图像红色区域,并输出红色区域中心点坐标
2020/06/02 Python
AmazeUI 加载进度条的实现示例
2020/08/20 HTML / CSS
The Body Shop美体小铺西班牙官网:天然化妆品
2019/06/21 全球购物
生产部经理岗位职责
2013/12/16 职场文书
英语简历自我评价
2014/01/26 职场文书
授权委托书范本
2014/04/03 职场文书
党建工作经验交流材料
2014/05/25 职场文书
三严三实对照检查材料
2014/09/22 职场文书
房地产工程部经理岗位职责
2015/04/09 职场文书
2015年药品销售工作总结范文
2015/05/25 职场文书
房贷收入证明范本
2015/06/12 职场文书
红色影片观后感
2015/06/18 职场文书
如何理解PHP核心特性命名空间
2021/05/28 PHP