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 event 事件解析
Jan 31 Javascript
js 分页全选或反选标识实现代码
Aug 09 Javascript
基于JavaScript实现继承机制之构造函数方法对象冒充的使用详解
May 07 Javascript
使用documentElement正确取得当前可见区域的大小
Jul 25 Javascript
jQuery手机浏览器中拖拽动作的艰难性分析
Feb 04 Javascript
jQuery制作简洁的图片轮播效果
Apr 03 Javascript
node.js实现的装饰者模式示例
Sep 06 Javascript
Vue.directive使用注意(小结)
Aug 31 Javascript
Vue项目部署在Spring Boot出现页面空白问题的解决方案
Nov 26 Javascript
Vue入门学习笔记【基本概念、对象、过滤器、指令等】
Apr 13 Javascript
使用JS判断页面是首次被加载还是刷新
May 26 Javascript
js实现选项卡效果
Mar 07 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天翼开放平台短信发送接口实现方法
2014/12/22 PHP
php获取网页里所有图片并存入数组的方法
2015/04/06 PHP
编写PHP脚本来实现WordPress中评论分页的功能
2015/12/10 PHP
php微信公众号开发之图片回复
2018/10/20 PHP
javascript 简单高效判断数据类型 系列函数 By shawl.qiu
2007/03/06 Javascript
运用Windows XP附带的Msicuu.exe、Msizap.exe来彻底卸载顽固程序
2007/04/21 Javascript
javascript中常用编程知识
2013/04/08 Javascript
js跳转页面方法总结
2014/01/29 Javascript
全面解析Bootstrap中form、navbar的使用方法
2016/05/30 Javascript
详解JS对象封装的常用方式
2016/12/30 Javascript
jQuery动态移除和添加背景图片的方法详解
2017/03/07 Javascript
JQuery实现文字无缝滚动效果示例代码(Marquee插件)
2017/03/07 Javascript
微信小程序分页加载的实例代码
2017/07/11 Javascript
VueJs 搭建Axios接口请求工具
2017/11/20 Javascript
详解easyui基于 layui.laydate日期扩展组件
2018/07/18 Javascript
Vue filter格式化时间戳时间成标准日期格式的方法
2018/09/16 Javascript
JavaScript实现无限级递归树的示例代码
2019/03/29 Javascript
vue-cli基础配置及webpack配置修改的完整步骤
2019/10/20 Javascript
基于html+css+js实现简易计算器代码实例
2020/02/28 Javascript
js实现点赞按钮功能的实例代码
2020/03/06 Javascript
微信小程序实现签到弹窗动画
2020/09/21 Javascript
Python多线程爬虫简单示例
2016/03/04 Python
Python使用gensim计算文档相似性
2016/04/10 Python
Python实现的对一个数进行因式分解操作示例
2019/06/27 Python
Python安装与卸载流程详细步骤(图解)
2020/02/20 Python
基于Python fminunc 的替代方法
2020/02/29 Python
keras模型保存为tensorflow的二进制模型方式
2020/05/25 Python
python 基于selectors库实现文件上传与下载
2020/12/31 Python
详解css3 object-fit属性
2018/07/27 HTML / CSS
英语专业职业生涯规划范文
2014/03/05 职场文书
护士毕业实习感言
2014/03/05 职场文书
科学发展观标语
2014/10/08 职场文书
项目经理岗位职责
2015/01/31 职场文书
2015年个人实习工作总结
2015/05/28 职场文书
婚礼上证婚人致辞
2015/07/28 职场文书
安装配置mysql及Navicat prenium的详细流程
2021/06/10 MySQL