function enterHandler(event)
{

var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
if (keyCode == 13) {
//处理函数
}
}
 
 

一、 onkeyup,onkeydown,onkeypress

  1. 在使用JavaScript做WEB键盘事件侦听捕获时,主要采用onkeypress、onkeydown、 onkeyup三个事件进行出来。该三个事件的执行顺序如下:onkeydown -> onkeypress ->onkeyup。在一般情况下,采用三种键盘事件均可对键盘输入进行有效的响应。当在实际使用中,会发现这几者有些不同的差别。
  2. onkeypress事件不能对系统功能键(例如:后退、删除等,其中对中文输入法不能有效响应)进行正常的响应,onkeydown和onkeyup均可以对系统功能键进行有效的拦截,但事件截获的位置不同,可以根据具体的情况选择不同的键盘事件。
  3. 由于onkeypress不能对系统功能键进行捕 获,导致window.event对象的keyCode属性和onkeydown,onkeyup键盘事件中获取的keyCode属性不同,主要表现在 onkeypress事件的keyCode对字母的大小写敏感,而onkeydown、onkeyup事件不敏感;onkeypress事件的 keyCode无法区分主键盘上的数字键和付键盘数字键的,而onkeydown、onkeyup的keyCode对主付键盘的数字键敏感。
  4. :在Maxthon浏览器中,onkeydown和onkeyup有连续响应两次键盘事件的BUG,onkeydown不能正常地对F1~F12的功能键进行正常的截获(onkeyup没有发现该问题),具体原因不明。不知道以后是否会进行订正。
  5. 键盘事件包括keydown、kepress和 keyup三种,每次敲击键盘都会(依次?)触发这三种事件,其中keydown和keyup是比较低级的接近于硬件的事件,通俗的理解是这两个事件可以 捕获到你敲击了键盘中某个键;而keypress是相对于字符层面的较为高级点的事件,这个事件能够捕捉到你键入了哪个字符。可以这样理解,如果你敲击了 A键,keydown和keyup事件只是知道你敲击了A键,它并不知道你敲的是大写的A(你同时按下了Shift键)还是敲的是小写a,它是以"键"为单位,你敲入了大写的A,它只是当成你敲下了shift和A两个键而已,但是keypress可以捕捉到你是敲入的大写的A还是小写的a.
  6. 在介绍Prototype中Event对象前先介绍一下浏览器中的事件模型,浏览器中的事件主要有HTML事件、鼠标事件和键盘事件,前两种事件比较好理解,这里主要解释一下键盘事件以及它在IE和firefox中的区别.
  7. 还要理解一个概念是键盘中的键分为字符(可打印)键和功能键(不可打印),功能键包括Backspace, Enter, Escape, the arrow keys, Page Up, Page Down, and F1 through F12 等
  8. 下面说一下键盘事件的具体使用方法,
  9. 键盘事件的event对象中包含一个 keyCode属性,IE中只有这一个属性,当为keydown和keyup 事件是,keycode属性表示你具体按下的键(也称为virtual keycode),当捕捉的是keypress事件时keyCode属性指的是你键入的字符(character code)
  10. 在firefox中情况有些不同,event对象包含一个keyCode属性和一个charCode属性,keydown和keyup事件的时候,keyCode表示的就是你具体按的键,charCode为;当捕捉的是keypress事件时,keyCode为,charCode指的是你按下的字符
  11. 当捕捉的是keypress事件时,当你按的是可打印字符时,keyCode为,charCode指的是你按下的字符的键值,当你按的是不可打印字符时,keyCode为按下的键的键值,charCode为
  12. 注意:功能键不会触发keypress事件,因为 keypress对应的就是可打印的字符,但是有一点IE和FF 中的区别,你按下一个字符键的同时按下alt键,在IE中不触发keypress事件,但是在ff中可触发,我发现在IE中按下ctrl键的时候只有按下 q键会触发事件其他的要么不会触发事件,要么被浏览器IE自身捕获了,例如你按下ctrl_A,全选某个东西,你按ctrl_S保存文件,但是在FF中就 好多了,事件都是先传递到网页,再向外传递
  13. 鉴于IE和FF中的区别,如果你比较懒的话,建议只使用keydow和keyup事件,这两种事件的使用在IE和FF中基本上没有区别,也不要捕获ctrl_A等被浏览器定义为快捷键的事件
  14. 键盘事件event对象还有三个其他的属性altKey, ctrlKey, and shiftKey 来判断你按下一个键的时候是否按下了alt等键,这三个属性使用比较简单,三种事件都可以使用,也不存在ie和ff的兼容性问题

二、event.which

Netscape/Firefox/Opera中不支持 window.event.keyCode,需要用event.which代替,IE用event.keCode方法获取当前被按下的键盘按键值,而 NetScape/FireFox/Opera用的则是event.which

最新文章

  1. Gulp常用前端流程自动化配置
  2. 【学习笔记】ES6标准入门
  3. Win7常规快捷键
  4. JS解析json数据
  5. xml操作
  6. MVC架构和SSH框架对应关系
  7. Active Session History (ASH) Performed An Emergency Flush Messages In The Alert Log
  8. UltraEdit软件破解方法
  9. 微服务架构的简单实现-Stardust
  10. swift学习 - 单例实现(singleton)
  11. SpringMVC图片上传与显示
  12. Dockerfile 中的 CMD 与 ENTRYPOINT
  13. mysql数据库导入导出 查询 修改表记录
  14. java 11 值得关注的新特性
  15. Python- - -练习目录
  16. Daily Scrumming* 2015.12.18(Day 10)
  17. codeforces 797B
  18. 2.10 select下拉框
  19. WEB返回顶部效果
  20. LeetCode: Path Sum 解题报告

热门文章

  1. jQuery中attr()和prop()的区别,修改checked属性 jquery attr('checked' 不起作用 attr('checked' 不对
  2. 在此处打开OpenPowershellHere右键 在此处打开命令窗口右键
  3. [填坑]解决"Your MaintenanceTool appears to be older than 3.0.2. ."问题
  4. go语言之进阶篇error接口应用
  5. 网络监测 断网 网速 ping 完整案例 MD
  6. 转:[大数据竞赛]协同过滤在这个问题上是否work
  7. Kafka:ZK+Kafka+Spark Streaming集群环境搭建(二十二)Spark Streaming接收流数据及使用窗口函数
  8. JPA(五):映射关联关系------映射单向多对一的关联关系
  9. Total Commander如何设置自定义快捷键在当前目录打开ConEmu
  10. java 大文件上传 断点续传 完整版实例 (Socket、IO流)