数字在主键盘和小数字键盘下的keyCode值不一致

  keydown或者keyup事件中获取键盘按下的keyCode值时需要注意,主键盘上数字按键的keyCode值和小键盘上的数字keyCode值是不一样,如果不注意这点,小心程序出现问题。

  •   主键盘的数字0~9的keyCode为:48~57
  •   小键盘上的数字0~9的keyCode则为:96~105

  JavaScript中键盘按下的keyCode问题

  在使用JavaScript做WEB键盘事件侦听捕获时,主要采用onkeypress、onkeydown、onkeyup三个事件,3个事件的响应循序为:onkeydown -> onkeypress ->onkeyup。在一般情况下,采用三种键盘事件均可对键盘输入进行有效的响应,但是在不同浏览器下的表现有些不一样(主要在W3C浏览器和IE浏览器下,下面说的代表IE8-,IE9+没测试)

  在IE下onkeypress事件不能对系统功能键(例如:后退、删除等)进行正常的响应,W3C浏览器不存在这个问题,可以响应keypress事件。对中文输入法输入时,IE和w3c浏览器都无法响应onkeypress事件。但是IE下onkeydown和onkeyup能及时响应事件,w3c浏览器只响应第一个字符按下事件(onkeydown)和最后一个输入结束事件(一般是空格onkeyup)。

  
  获取keyCode值时,又可以区分为数字和字母。

1)对于字母,主要区别在firefox。

  在IE下,onkeypress获取到的keyCode值对于之母是区分大小写的,onkeydown和onkeyup获取到的keyCode值不区分大小写(得到的是大写状态下的keyCode)。chrome浏览器的表现和IE一致。

  firefox下onkeydow和onkeyup表现和上面说明一致,但是onkeypress得到的keyCode既然是0,不知道是不是bug,firefox版本12.

2)对于数字,主要区别在于onkeypress事件对于主键盘和小数字键盘。

  对于onkeydown和onkeyup事件,得到的keyCode值取决于按下的是主键盘上的还是小数字键盘上的数字,这2个事件中获取的keyCode值一样,但是按下主键盘下得到的是0~9的keyCode为:48~57,小数字键盘得到的是0~9的keyCode则为:96~105。

 

  firefox下onkeypress得到keyCode和字母一样,为0(主键盘或者小数字键盘)。IE和chrome得到keyCode一致,为主键盘上的数字(0~9的keyCode为:48~57,不管按下的是主键盘或者小数字键盘)


 

加支付宝好友偷能量挖...


原创文章,转载请注明出处:数字在主键盘和小数字键盘下的keyCode值不一致

评论(0)Web开发网
阅读(488)喜欢(0)JavaScript/Ajax开发技巧