试图弄清楚jQuery中是否存在错误,或者是否是我正在做的事情

时间:2011-10-25 20:07:05

标签: javascript jquery keydown

$(document).keydown(function (event)
    {
    alert(event.which);
    });

对于分号键; ,这在Firefox中为59,在Chrome中为186。但是,从keydown事件的jQuery参考页面,它说

“虽然浏览器使用不同的属性来存储此信息,但jQuery会规范化.which属性,以便您可以可靠地使用它来检索密钥代码。此代码对应于键盘上的一个键,包括特殊键的代码,如箭头。“

我错过了什么吗?

4 个答案:

答案 0 :(得分:4)

which属性是按下键的“一站式商店”,允许您忽略keyCodecharCode属性之间的差异。这就是jQuery提供的“规范化”。

which值的差异归结为各种浏览器提供信息的方式之间的差异 - 因此您必须编写代码来处理返回的不同值。这种行为在线a few references

答案 1 :(得分:1)

A quick Google search表示您只需测试两者。这与Firefox不一致。

答案 2 :(得分:0)

我不知道jQuery,但我建议坚持使用keypress事件来键入键,只使用keydown事件来处理箭头等特殊键。

答案 3 :(得分:0)

以下是jQuery所做的“规范化”的全部内容:

if ( event.which == null ) {
    event.which = original.charCode != null ? original.charCode : original.keyCode;
}

如果keyCode不存在,它看起来只是charCode。仅当charCode尚不存在时才会使用event.which。它不会改变数字以使它们保持一致。