好的,.keypress 和 .keydown/.keyup 有什么区别?目前我正在使用 .keydown ,它为我的键返回 38 的 .which 值,现在如果我将其更改为 .keypress 它为同一个键返回 109 的值。有什么区别,为什么同一个键的值不同?
5 回答
如果你按下一个按钮,它会触发 akeydown
并释放它会触发 a keyup
。keypress
通常介于这两者之间。
keydown
并keyup
讨论哪个键已更改。keypress
告诉该键代表哪个字符。
请注意,这完全取决于浏览器!
我会成为 d$%^@d,keypress 确实有区别,而我一直没有意识到。哈哈
看看我的小提琴并尝试像字母“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
包含关键信息。”
您应该阅读以下帖子:http: //javascript.info/tutorial/keyboard-events
Keydown 触发任何按键并提供扫描码。Keypress 在 keydown 后触发并提供字符代码,但仅保证字符键。
在正常情况下,请选择keyup
:
$(document).keyup(function(e){
console.log(e.which);
});
原因:
keydown
当用户按住键时会一直触发,而keypress
只keyup
触发一次。keypress
不检测特殊键(例如SHIFT
),keydown
而是检测keyup
。
KeyPress 发生在 KeyDown 之后。因此,您可以使用 KeyDown 来确定它是什么键,然后使用 KeyPress 来禁止该字符。