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 相关文章推荐
js String对象中常用方法小结(字符串操作)
Jan 27 Javascript
使用Post提交时须将空格转换成加号的解释
Jan 14 Javascript
JavaScript函数的4种调用方法详解
Apr 22 Javascript
详解vue.js的事件处理器v-on:click
Jun 27 Javascript
vue获取当前点击的元素并传值的实例
Mar 09 Javascript
JS实现获取毫秒值及转换成年月日时分秒的方法
Aug 15 Javascript
vue 中滚动条始终定位在底部的方法
Sep 03 Javascript
详解如何在Javascript和Sass之间共享变量
Nov 13 Javascript
JS数组降维的实现Array.prototype.concat.apply([], arr)
Apr 28 Javascript
js实现飞机大战游戏
Aug 26 Javascript
js实现车辆管理系统
Aug 26 Javascript
vue route新窗口跳转页面并且携带与接收参数
Apr 10 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笔记之:php数组相关函数的使用
2013/04/26 PHP
跟我学Laravel之路由
2014/10/15 PHP
PHP中遇到的时区问题解决方法
2015/07/23 PHP
php实现图片等比例缩放代码
2015/07/23 PHP
图片自动缩小 点击放大
2008/07/07 Javascript
javascript prototype原型操作笔记
2009/12/07 Javascript
jquery常用技巧及常用方法列表集合
2011/04/06 Javascript
在chrome浏览器中,防止input[text]和textarea在聚焦时出现黄色边框的解决方法
2011/05/24 Javascript
JQuery onload、ready概念介绍及使用方法
2013/04/27 Javascript
Firefox中通过JavaScript复制数据到剪贴板(Copy to Clipboard 跨浏览器版)
2013/11/22 Javascript
jquery数组封装使用方法分享(jquery数组遍历)
2014/03/25 Javascript
Javascript前端UI框架Kit使用指南之Kitjs简介
2014/11/28 Javascript
jquery获取img的src值的简单实例
2016/05/17 Javascript
拥Bootstrap入怀——导航栏篇
2016/05/30 Javascript
TableSort.js表格排序插件使用方法详解
2017/02/10 Javascript
Angular数据绑定机制原理
2018/04/17 Javascript
Layui数据表格之获取表格中所有的数据方法
2018/08/20 Javascript
vuejs中监听窗口关闭和窗口刷新事件的方法
2018/09/21 Javascript
vue-cli3.0 脚手架搭建项目的过程详解
2018/10/19 Javascript
微信小程序实现星级评价效果
2018/12/28 Javascript
uploadify插件实现多个图片上传并预览
2019/09/30 Javascript
webpack4 配置 ssr 环境遇到“document is not defined”
2019/10/24 Javascript
[02:54]DOTA2英雄基础教程 撼地者
2014/01/14 DOTA
Python实现的金山快盘的签到程序
2013/01/17 Python
跟老齐学Python之编写类之四再论继承
2014/10/11 Python
解决python3 json数据包含中文的读写问题
2018/05/10 Python
python 循环读取txt文档 并转换成csv的方法
2018/10/26 Python
Python matplotlib画图与中文设置操作实例分析
2019/04/23 Python
Python自动重新加载模块详解(autoreload module)
2020/04/01 Python
基于Python3读写INI配置文件过程解析
2020/07/23 Python
CSS3中的content属性使用示例
2015/07/20 HTML / CSS
为什么要有struct关键字
2012/05/08 面试题
2014年班主任工作总结
2014/11/08 职场文书
作文评语怎么写
2014/12/25 职场文书
用Python selenium实现淘宝抢单机器人
2021/06/18 Python
详解nginx安装过程并代理下载服务器文件
2022/02/12 Servers