在jQuery keypress事件中检测按下的键是什么

3

我想在我的一个页面中使用热键。然而,似乎唯一能够被检测到的热键是回车键。

$(document).keypress(function(e) {
    var key = e.which;
    switch (key)
    {
        case 72:
          alert("H");
          break;
        case 82:
          alert("R");
          break;
        case 66:
          alert("B");
          break;
        case 13:
          alert("ENTER");
          break;
        default:
          alert("Invalid");
    }
});

按键码值参考:http://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes


如果您使用alert(key),输出会是什么? - jonhopkins
这些代码在我的项目中运行良好。可能是由于您的字符集的原因。 - AloneInTheDark
1个回答

5
根据MDN(通过jQuery event.which文档),e.which返回Unicode字符代码,因此根据文本大小写,H可以是72或104(h)。

在keypress事件中,按下的键的Unicode值存储在keyCode或charCode属性中。

示例演示


这回答了我的问题。谢谢。但我还有一个问题。我想要多个热键,就像我在问题中说的那样,并且我想使用JS开关而不是多个ifif...else。是否可以在单个函数上使用2个case?类似于:switch(key) { case 72 || case 104: //要调用的函数; break; }再次感谢。 - KevinT.
@KevinHandogTresuelo 在这种情况下,您需要使用修饰键(Shift、Alt、Ctrl)或将当前按下/释放的键存储在变量中。所有这些都在这个问题中讨论过了。 - CodingIntrigue

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接