那么.keypress和.keydown / .keyup的区别是什么?目前我正在使用.keydown,它为我的密钥返回.which值为38,现在如果我将其更改为.keypress,它会为该相同的密钥返回值109。有什么区别,为什么同一个键的值不同?
答案 0 :(得分:22)
如果按一个按钮,则会触发keydown
并释放它会触发keyup
。 keypress
通常介于这两者之间。
keydown
和keyup
谈论哪些 密钥 已更改。 keypress
告诉该密钥代表哪个 字符 。
请注意,这完全取决于浏览器!
请参阅this article about the differences between the key events as implemented on various browsers。
答案 1 :(得分:21)
我会d $%^ @ d,与按键确实存在差异,这一次我从未意识到。大声笑
看到我的小提琴,尝试类似字母“r”
http://jsfiddle.net/SpYk3/NePCm/
不知怎的,我从未关注过这个
发现更多信息:
http://www.quirksmode.org/js/keys.html
“这两个属性为
keyCode
和charCode
。简单地说,keyCode
说明了用户按下的实际键盘键,而charCode
给出了结果字符的ASCII值。这些信息位不必相同;例如,小写'a'和大写'A'具有相同的keyCode
,因为用户按下相同的键,但是不同的charCode
因为结果字符不同。Explorer和Opera 不支持
charCode
。但是,他们会在keyCode
中提供角色信息,但仅限onkeypress
。onkeydown
和-up
keyCode
包含关键信息。“
答案 2 :(得分:14)
您应该阅读以下帖子: http://javascript.info/tutorial/keyboard-events
Keydown在任何按键时触发并提供扫描码。 Keydress在keydown之后触发并提供char代码,但只保证字符键。
答案 3 :(得分:7)
在正常情况下,请转到keyup
:
$(document).keyup(function(e){
console.log(e.which);
});
原因:
keydown
会一直触发,而keypress
和keyup
只会触发一次。keypress
未检测到特殊密钥(例如SHIFT
),keydown
和keyup
。答案 4 :(得分:2)
KeyPress发生在KeyDown之后。因此,您可以使用KeyDown来确定它是什么密钥,然后使用KeyPress来禁止该角色。