jQuery .keypress&.keydown .which

Chr*_*sMJ 36 javascript keyboard jquery keypress keydown

那么.keypress和.keydown/.keyup的区别是什么?目前我正在使用.keydown,它为我的密钥返回一个.which值为38,现在如果我将其更改为.keypress,它会返回相同密钥的值109.有什么区别,为什么同一个键的值不同?

Rvd*_*vdK 23

如果你按下一个按钮它会发射keydown并释放它会发射一个keyup.的keypress通常是那些介于两者之间.

keydownkeyup谈谈哪个密钥已被更改.keypress告诉键表示哪个字符.

请注意,这完全取决于浏览器!

请参阅此文章,了解在各种浏览器上实现的关键事件之间的差异.


SpY*_*3HH 21

我将是d $%^ @ d,与按键确实存在差异,这一次我从未意识到.大声笑

看到我的小提琴,尝试类似字母"r"

http://jsfiddle.net/SpYk3/NePCm/

不知怎的,我从来没有注意到这一点

发现更多信息:

http://www.quirksmode.org/js/keys.html

"这两个属性是keyCodecharCode.简单地keyCode说,放一个关于用户按下的实际键盘键的东西,同时charCode给出结果字符的ASCII值.这些信息位不必相同;例如,小写'a'和大写'A'具有相同的keyCode,因为用户按下相同的键,但是charCode因为结果字符不同而不同.

资源管理器和Opera 支持charCode.但是,他们会提供角色信息keyCode,但仅限于onkeypress.onkeydown-up keyCode包含关键信息."


jbl*_*jbl 14

您应该阅读以下帖子:http: //javascript.info/tutorial/keyboard-events

Keydown在任何按键时触发并提供扫描码.Keydress在keydown之后触发并提供char代码,但只保证字符键.


Luc*_*cia 7

在正常情况下,请访问keyup:

$(document).keyup(function(e){
  console.log(e.which);
});
Run Code Online (Sandbox Code Playgroud)

原因:

  1. keydown保持当用户拿着钥匙下来射击,而keypresskeyup火一次.
  2. keypress不检测特殊键(例如SHIFT),keydown并且keyup.


小智 2

KeyPress 发生在 KeyDown 之后。因此,您可以使用 KeyDown 来确定它是什么键,然后使用 KeyPress 来禁止该字符。