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实现单击和双击并存的方法
Dec 13 Javascript
AngularJS基础学习笔记之指令
May 10 Javascript
jQuery实现网站添加高亮突出显示效果的方法
Jun 26 Javascript
JavaScript使用FileSystemObject对象写入文本文件内容的方法
Aug 05 Javascript
常见JS验证脚本汇总
Dec 01 Javascript
如何利用AngularJS打造一款简单Web应用
Dec 05 Javascript
基于JavaScript实现根据手机定位获取当前具体位置(X省X市X县X街道X号)
Dec 29 Javascript
Angular 5.x 学习笔记之Router(路由)应用
Apr 08 Javascript
vue动态绑定组件子父组件多表单验证功能的实现代码
May 14 Javascript
JavaScript实现随机点名器实例详解
May 07 Javascript
js实现动态时钟
Mar 12 Javascript
Vue图片裁剪组件实例代码
Jul 02 Vue.js
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 模板高级篇总结
2006/12/21 PHP
PHP的拦截器实例分析
2014/11/03 PHP
php实现格式化多行文本为Js可用格式
2015/04/15 PHP
浅析iis7.5安装配置php环境
2015/05/10 PHP
php多重接口的实现方法
2015/06/20 PHP
Laravel 中获取上一篇和下一篇数据
2015/07/27 PHP
Yii2.0高级框架数据库增删改查的一些操作
2015/11/16 PHP
php中strlen和mb_strlen用法实例分析
2016/11/12 PHP
jquery下组织javascript代码(js函数化)
2010/08/25 Javascript
查看图片(前进后退)功能实现js代码
2013/04/24 Javascript
JS 精确统计网站访问量的实例代码
2013/07/05 Javascript
JQGrid的用法解析(列编辑,添加行,删除行)
2013/11/08 Javascript
jQuery插件zoom实现图片全屏放大弹出层特效
2015/04/15 Javascript
canvas 绘制圆形时钟
2017/02/22 Javascript
JavaScript实现动态增删表格的方法
2017/03/09 Javascript
Angular2数据绑定详解
2017/04/18 Javascript
ES5 ES6中Array对象去除重复项的方法总结
2017/04/27 Javascript
form表单数据封装成json格式并提交给服务器的实现方法
2017/12/14 Javascript
vue中的provide/inject的学习使用
2018/05/09 Javascript
详解js删除数组中的指定元素
2018/10/31 Javascript
微信小程序实现的一键拨号功能示例
2019/04/24 Javascript
JS求1到任意数之间的所有质数的方法详解
2019/05/20 Javascript
Promise扫盲贴
2019/06/24 Javascript
微信小程序实现下滑到底部自动翻页功能
2020/03/07 Javascript
javascript实现简单页面倒计时
2021/03/02 Javascript
Python类的专用方法实例分析
2015/01/09 Python
Python中的日期时间处理详解
2016/11/17 Python
Python使用APScheduler实现定时任务过程解析
2019/09/11 Python
Django web自定义通用权限控制实现方法
2020/11/24 Python
使用Python提取文本中含有特定字符串的方法示例
2020/12/09 Python
德国购买踏板车网站:Microscooter
2019/10/14 全球购物
幼师专业毕业生自荐信
2013/09/29 职场文书
海南地接欢迎词
2014/01/14 职场文书
电子商务专业应届毕业生求职信
2014/06/21 职场文书
2014乡镇领导班子四风对照检查材料思想汇报
2014/10/05 职场文书
2016年社会管理综治宣传月活动总结
2016/03/16 职场文书