首页 > 为什么 keypress 事件和 keydown/keyup 事件的 keycode 不一样?

为什么 keypress 事件和 keydown/keyup 事件的 keycode 不一样?

代码:

<textarea id="test" rows="10" cols="40"></textarea>
$('#test')
  .on('keyup', function (e) {  console.log('keyup: ' + e.which); })
  .on('keydown', function (e) {  console.log('keydown: ' + e.which); })
  .on('keypress', function (e) { console.log('keypress: ' + e.which); })

http://jsfiddle.net/55jxybcc/2/

按某些键是一样的,按某些键就不一样了。

EDIT:
搜了一下发现原来有 keyCode 和 ascii keyCode 之分....
http://help.adobe.com/en_US/AS2LCR/Flash_10.0/help.html?content=00000520.html

keypress 对应的是 ascii keyCode
keyup/keydown 对应的是 keyCode...


目测是大小写字母的差别。
试了下,比如按下键盘w键。

keydown: 87
keypress: 119
keyup: 87

87是大写W的字码
119是小写w的字码


keydown和keyup不分大小写 keyCode都是65-90
keypress区分大小写 大写是65-90 小写97-122

【热门文章】
【热门文章】