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 相关文章推荐
javascript 拖放效果实现代码
Jan 22 Javascript
快速解决FusionCharts联动的中文乱码问题
Dec 04 Javascript
深入理解Javascript里的依赖注入
Mar 19 Javascript
javascript中setTimeout的问题解决方法
May 08 Javascript
浅谈Javascript线程及定时机制
Jul 02 Javascript
深入学习jQuery Validate表单验证
Jan 18 Javascript
JavaScript中通过提示框跳转页面的方法
Feb 14 Javascript
AngularJs Dependency Injection(DI,依赖注入)
Sep 02 Javascript
vue系列之requireJs中引入vue-router的方法
Jul 18 Javascript
解决angular2 获取到的数据无法实时更新的问题
Aug 31 Javascript
vue同个按钮控制展开和折叠同个事件操作
Jul 29 Javascript
详解CocosCreator项目结构机制
Apr 14 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/01/03 PHP
AJAX异步从优酷专辑中采集所有视频及信息(JavaScript代码)
2010/11/20 Javascript
jQuery EasyUI API 中文文档 - Pagination分页
2011/09/29 Javascript
js数组转json并在后台对其解析具体实现
2013/11/20 Javascript
jQuery如何实现点击页面获得当前点击元素的id或其他信息
2014/01/09 Javascript
判断一个对象是否为jquery对象的方法
2014/03/12 Javascript
javascript删除元素节点removeChild()用法实例
2015/05/26 Javascript
Javascript中的数据类型之旅
2015/10/18 Javascript
体验jQuery和AngularJS的不同点及AngularJS的迷人之处
2016/02/02 Javascript
JavaScript中使用数组方法汇总
2016/02/16 Javascript
浅谈JS原生Ajax,GET和POST
2016/06/08 Javascript
vue利用better-scroll实现轮播图与页面滚动详解
2017/10/20 Javascript
vuejs实现递归树型菜单组件
2018/01/13 Javascript
详解JWT token心得与使用实例
2019/08/02 Javascript
layui弹出框Tab选项卡的示例代码
2019/09/04 Javascript
JavaScript如何实现图片处理与合成
2020/05/29 Javascript
jquery实现异步文件上传ajaxfileupload.js
2020/10/23 jQuery
[45:34]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第一场 12.18
2020/12/19 DOTA
python学生信息管理系统
2018/03/13 Python
Python实现判断一行代码是否为注释的方法
2018/05/23 Python
Django项目中model的数据处理以及页面交互方法
2018/05/30 Python
python模块导入的细节详解
2018/12/10 Python
浅谈Pandas:Series和DataFrame间的算术元素
2018/12/22 Python
PyTorch预训练的实现
2019/09/18 Python
python opencv根据颜色进行目标检测的方法示例
2020/01/15 Python
为什么相对PHP黑python的更少
2020/06/21 Python
深入了解Python 变量作用域
2020/07/24 Python
九年级科学教学反思
2014/01/29 职场文书
药品营销策划方案
2014/06/15 职场文书
四查四看整改措施
2014/09/19 职场文书
演讲开场白和结束语
2015/05/29 职场文书
团结友爱主题班会
2015/08/13 职场文书
如何用JS实现网页瀑布流布局
2021/04/24 Javascript
go结构体嵌套的切片数组操作
2021/04/28 Golang
Python pandas之求和运算和非空值个数统计
2021/08/07 Python
JavaScript中document.activeELement焦点元素介绍
2021/11/27 Javascript