命令键的jQuery密钥代码

时间:2010-09-30 19:36:04

标签: javascript jquery command keydown onkeyup

我已阅读jQuery Event Keypress: Which key was pressed?How can i check if key is pressed during click event with jquery?

但是我的问题是,如果你能为所有浏览器获得相同的关键事件?目前我知道Firefox为命令按钮(Mac)提供了代码224,而Chrome和Safari为其提供了值91.是最好的方法来简单地检查用户正在使用的浏览器并根据按键确定那还是有办法让我可以在所有浏览器中获得一个关键代码? 注意我得到的值是:

var code = (evt.keyCode ? evt.keyCode : evt.which);

如果可能的话,我很乐意不使用插件只是因为我只需要知道按下命令 / ctrl (windows系统)键。

3 个答案:

答案 0 :(得分:81)

jQuery已经处理过了。要检查是否按下了控件,您应该使用:

$(window).keydown(function (e){
    if (e.ctrlKey) alert("control");
});

修饰键列表:

e.ctrlKey
e.altKey
e.shiftKey

正如fudgey所说:

e.metaKey

Might work on MAC. Some other ways here as well

答案 1 :(得分:11)

如果您对按下 Command 键的确切时刻不感兴趣,只需在按下另一个键时按下它,那么您可以使用metaKey属性事件。

否则,对于keydownkeyup个事件,您需要的属性在所有浏览器中均为keyCode。不幸的是, Command 键在所有浏览器中没有相同的键码,左右 Command 在WebKit中分别具有不同的值(分别为91和93)。没有某种浏览器嗅探,我看不到一种检测这些密钥的简单方法,但可能有一种。 which属性绝对不会帮助你。

有关详细信息,http://unixpapa.com/js/key.html全面涵盖了所有主流浏览器中的关键事件处理。

答案 2 :(得分:1)

在这里,您可以试试这个可运行的代码片段:



$(window).on('keypress', function(event) {
  $("body").append($("<p>").text(
       "ctrlKey " + event.ctrlKey
    + "; altKey " + event.altKey
    + "; metaKey " + event.metaKey
    + "; shiftKey " + event.shiftKey
    + "; isCommandPressed " + isCommandPressed(event)
  ));
  
});

function isCommandPressed(event) {
  return event.metaKey && ! event.ctrlKey;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<p>Focus on this select control and try pressing keys:</p>

<p><select><option>Test</option></select></p>
&#13;
&#13;
&#13;