keypress和keydown通过event.which提供不同的代码

时间:2015-01-20 00:04:33

标签: javascript jquery events

我正在使用firefox,当我使用event.which来找出导致事件触发的键时,我在检查event.which时会从keypress事件到keydown事件获得不同的代码。

使用' - '键(连字符/减号)。对于event.which,当基于keypress事件报告时,我得到45,但是当基于keydown事件报告时,值为173。

对于keypress,如果预期的代码是大于128的值(我得到expected_code& 0x7f),我得到错误的代码。但是,如果我使用keydown做同样的事情,我会得到预期的代码。

的jsfiddle: http://jsfiddle.net/fzd3fjqm/1/

html:

<input id="whichkey" value="type something">
<div id="log"></div>
<div id="log2"></div>

javascript:

$( "#whichkey" ).on( "keypress", function( event ) {
$( "#log" ).html( event.type + ": " + event.which );
});
$( "#whichkey" ).on( "keydown", function( event ) {
$( "#log2" ).html( event.type + ": " + event.which )
});

这是预期的吗?

我正在编写一个基于event.which从按键触发和过滤键触发的函数,并且它不能很好地处理所描述的行为。

如果这是预期的,那么通过按键触发的功能确定哪个键被按下的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

是的,keyCode对于每个事件都有所不同(并且因浏览器而异):http://www.quirksmode.org/js/keys.html