键盘事件keydown、keypress、keyup分析解答
2015-08-12 11:19
246 查看
英文输入法:
事件触发顺序:keydown - > keypress - > keyup
中文输入法:
firfox:输入触发keydown,回车确认输入触发keyup
chrome:输入触发keydown、keyup,回车确认输入只触发keydown
IE:输入触发keydown、keyup,回车确认输入触发keydown,keyup
Safari:输入触发keydown、keyup,回车确认输入触发keydown,keyup
opera:输入触发keydown、keyup,回车确认输入触发keydown,keyup
keypress事件不能对系统功能键(例如:后退、删除等,其中对中文输入法不能有效响应)进行正常的响应,
keydown和keyup均可以对系统功能键进行有效的拦截,但事件截获的位置不同。
键盘中的键分为字符(可打印)键和功能键(不可打印),系统功能键包括如下:
Esc、Tab、Caps Lock、Shift、Ctrl、Alt、Enter、Backspace、Print
Screen、Scroll Lock、Pause Break、Insert、Delete、Home、End、Page Up、Page Down, F1 through F12,Num Lock、The Arrow Keys。
keypress响应系统功能键总结:
Firefox:支持 Esc、Enter、Backspace、Pause Break、Insert、Delete、Home、End、Page
Up、Page Down、F1 through F12、The Arrow Keys
Chrome:支持Enter
Oprea:支持Enter
Safari:支持Enter
IE:支持Esc、Enter
ps:
firefox:上下左右键会触发kepress.
chrome: 上下左右键不会触发kepress.
oprea:上下左右键不会触发kepress.
safari:上下左右键不会触发kepress.
IE:上下左右键不会触发kepress.
================================================================================
keyCode(键码), which, charCode(字符编码)
keydown: 获得keyCode, charCode=0
keypress: 字符(英文区分大小写+数字 / * , . ...等非功能键),keyCode=0 ,获取charCode值, 反之获取keyCode, charCode=0
keyup: 获得keyCode, charCode=0
jquery 中 event.which = original.charCode != null ? original.charCode : original.keyCode;
总结:回车、上下左右、等功能键keydown、keypress、keyup都获取keyCode,并且值相等。
开启大写情况,keydown、keypress(字母,主键盘数字、回车)、keyup,which值相等,小写kepress获取的which不同于keypress、keyup。
keypress事件的keyCode对字母的大小写敏感,而keydown、keyup事件不敏感
keypress事件的which值无法区分主键盘上的数字键和附键盘数字键的,而keydown、keyup的which值对主附键盘的数字键敏感。
【
IE(ie9以下)只有一个属性KeyCode属性,当为keydown和keyup 事件是,keycode属性表示你具体按下的键(也称为virtual keycode),当捕捉的是keypress事件时keyCode属性指的是你键入的字符(character code)
标准浏览器中情况有些不同,event对象包含一个keyCode属性和一个charCode属性,keydown和keyup事件的时候,keyCode表示的就是你具体按的键,charCode为0;当捕捉的是keypress事件时,keyCode为0,charCode指的是你按下的字符,鉴于IE和FF中的区别,如果你比较懒的话,建议只使用keydow和keyup事件
】
事件触发顺序:keydown - > keypress - > keyup
中文输入法:
firfox:输入触发keydown,回车确认输入触发keyup
chrome:输入触发keydown、keyup,回车确认输入只触发keydown
IE:输入触发keydown、keyup,回车确认输入触发keydown,keyup
Safari:输入触发keydown、keyup,回车确认输入触发keydown,keyup
opera:输入触发keydown、keyup,回车确认输入触发keydown,keyup
keypress事件不能对系统功能键(例如:后退、删除等,其中对中文输入法不能有效响应)进行正常的响应,
keydown和keyup均可以对系统功能键进行有效的拦截,但事件截获的位置不同。
键盘中的键分为字符(可打印)键和功能键(不可打印),系统功能键包括如下:
Esc、Tab、Caps Lock、Shift、Ctrl、Alt、Enter、Backspace、Print
Screen、Scroll Lock、Pause Break、Insert、Delete、Home、End、Page Up、Page Down, F1 through F12,Num Lock、The Arrow Keys。
keypress响应系统功能键总结:
Firefox:支持 Esc、Enter、Backspace、Pause Break、Insert、Delete、Home、End、Page
Up、Page Down、F1 through F12、The Arrow Keys
Chrome:支持Enter
Oprea:支持Enter
Safari:支持Enter
IE:支持Esc、Enter
ps:
firefox:上下左右键会触发kepress.
chrome: 上下左右键不会触发kepress.
oprea:上下左右键不会触发kepress.
safari:上下左右键不会触发kepress.
IE:上下左右键不会触发kepress.
================================================================================
keyCode(键码), which, charCode(字符编码)
keydown: 获得keyCode, charCode=0
keypress: 字符(英文区分大小写+数字 / * , . ...等非功能键),keyCode=0 ,获取charCode值, 反之获取keyCode, charCode=0
keyup: 获得keyCode, charCode=0
jquery 中 event.which = original.charCode != null ? original.charCode : original.keyCode;
总结:回车、上下左右、等功能键keydown、keypress、keyup都获取keyCode,并且值相等。
开启大写情况,keydown、keypress(字母,主键盘数字、回车)、keyup,which值相等,小写kepress获取的which不同于keypress、keyup。
keypress事件的keyCode对字母的大小写敏感,而keydown、keyup事件不敏感
keypress事件的which值无法区分主键盘上的数字键和附键盘数字键的,而keydown、keyup的which值对主附键盘的数字键敏感。
【
IE(ie9以下)只有一个属性KeyCode属性,当为keydown和keyup 事件是,keycode属性表示你具体按下的键(也称为virtual keycode),当捕捉的是keypress事件时keyCode属性指的是你键入的字符(character code)
标准浏览器中情况有些不同,event对象包含一个keyCode属性和一个charCode属性,keydown和keyup事件的时候,keyCode表示的就是你具体按的键,charCode为0;当捕捉的是keypress事件时,keyCode为0,charCode指的是你按下的字符,鉴于IE和FF中的区别,如果你比较懒的话,建议只使用keydow和keyup事件
】
相关文章推荐
- C++11中的右值引用
- cocos图显示不出来,怀疑是太长了.然后百度了下各个硬件平台的限制
- HTML标签嵌套规则
- 社説
- hdu5375
- redhat安装ibm,rdac多路径的奇葩经历
- iOS 应用内付费(IAP)开发步骤一:填写相关的税务,银行,联系人信息;
- JAVA上百实例源码以及开源项目
- 大盘攻击4500需分三步走 逢回调即加仓
- DWZ富客户端框架 api
- Objective-C Modernization Tool
- URLClassLoader类加载器
- 记录----2015/8/12
- 使用 spice-guest-tools 让虚拟机支持spicec 双屏显示
- [资料]pthreads PHP
- HDU5375——DP——Gray code
- 激活神器 KMSAuto Net 2015 v1.3.8
- iOS中的分类(category)
- 集成CCFlow与GPM的办公系统驰骋CCOA介绍(一)
- GitHub 上都有值得关注学习的 iOS 开源项目