好的,那么.keypress和.keydown / .keyup有什么区别?目前我正在使用.keydown,该键返回一个值为38的.which值,现在如果我将其更改为.keypress,则会返回相同键的值为109。有什么区别,为什么相同键的值不同?
好的,那么.keypress和.keydown / .keyup有什么区别?目前我正在使用.keydown,该键返回一个值为38的.which值,现在如果我将其更改为.keypress,则会返回相同键的值为109。有什么区别,为什么相同键的值不同?
keydown
事件,释放按钮会触发一个 keyup
事件。而在这两个事件之间,通常会触发一个 keypress
事件。
keydown
和 keyup
描述的是哪个键被更改了。而 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
包含键信息。
Keydown在任何按键时触发并提供扫描码。 Keypress在keydown之后触发并提供字符码,但仅对字符键保证可用。
keyup
事件:$(document).keyup(function(e){
console.log(e.which);
});
原因:
keydown
事件在用户按住键时持续触发,而 keypress
和 keyup
只会触发一次。keypress
无法检测特殊键(例如 SHIFT
),而 keydown
和 keyup
可以。KeyPress事件发生在KeyDown事件之后。因此,您可以使用KeyDown来确定按下的键是什么,然后使用KeyPress来禁止该字符。