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 相关文章推荐
jQuery学习笔记 操作jQuery对象 CSS处理
Sep 19 Javascript
JS获取键盘上任意按键的值(实例代码)
Nov 12 Javascript
JavaScript监听和禁用浏览器回车事件实例
Jan 31 Javascript
jQuery简单实现隐藏以及显示特效
Feb 26 Javascript
对比分析AngularJS中的$http.post与jQuery.post的区别
Feb 27 Javascript
js显示当前日期时间和星期几
Oct 22 Javascript
JS组件Bootstrap Select2使用方法解析
May 30 Javascript
AngularJS创建自定义指令的方法详解
Nov 03 Javascript
深入理解jquery中的each用法
Dec 14 Javascript
vue-router实现webApp切换页面动画效果代码
May 25 Javascript
详解如何用模块化的方式写vuejs
Dec 16 Javascript
vue.js轮播图组件使用方法详解
Jul 03 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
mysql_fetch_assoc和mysql_fetch_row的功能加起来就是mysql_fetch_array
2007/01/15 PHP
解析csv数据导入mysql的方法
2013/07/01 PHP
thinkPHP5框架闭包函数与子查询传参用法示例
2018/08/02 PHP
在phpstudy集成环境下的nginx服务器下配置url重写
2019/12/02 PHP
纯JAVASCRIPT图表动画插件Highcharts Examples
2011/04/16 Javascript
IE6下focus与blur错乱的解决方案
2011/07/31 Javascript
Bootstrap每天必学之日期控制
2016/03/07 Javascript
bootstrap fileinput完整实例分享
2016/11/08 Javascript
ES6入门教程之Iterator与for...of循环详解
2017/05/17 Javascript
npm国内镜像 安装失败的几种解决方案
2017/06/04 Javascript
JS基于正则实现数字千分位用逗号分隔的方法
2017/06/16 Javascript
AngularJS使用Filter自定义过滤器控制ng-repeat去除重复功能示例
2018/04/21 Javascript
jQuery事件blur()方法的使用实例讲解
2019/03/30 jQuery
阿望教你用vue写扫雷小游戏
2020/01/20 Javascript
webpack.DefinePlugin与cross-env区别详解
2020/02/23 Javascript
Vue实现导航栏菜单
2020/08/19 Javascript
[55:25]2018DOTA2亚洲邀请赛3月29日 小组赛A组 VG VS OG
2018/03/30 DOTA
TensorFlow实现RNN循环神经网络
2018/02/28 Python
python 获取list特定元素下标的实例讲解
2018/04/09 Python
Python3中详解fabfile的编写
2018/06/24 Python
python 判断参数为Nonetype类型或空的实例
2018/10/30 Python
Python实现将多个空格换为一个空格.md的方法
2018/12/20 Python
Python中logging实例讲解
2019/01/17 Python
HTML5实现表单自动验证功能实例代码
2017/01/11 HTML / CSS
澳大利亚最受欢迎的美发和美容在线商店:Catwalk
2018/12/12 全球购物
匡威俄罗斯官网:Converse俄罗斯
2020/05/09 全球购物
教师产假请假条范文
2014/04/10 职场文书
课外小组活动总结
2014/08/27 职场文书
暑期培训心得体会
2014/09/02 职场文书
收入及婚姻状况证明
2014/11/20 职场文书
2014工程部年度工作总结
2014/12/17 职场文书
结婚通知短信怎么写
2015/04/17 职场文书
早上好问候语大全
2015/11/10 职场文书
你会写报告?产品体验报告到底该怎么写?
2019/08/14 职场文书
nginx中封禁ip和允许内网ip访问的实现示例
2022/03/17 Servers
python单向链表实例详解
2022/05/25 Python