我已阅读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系统)键。
答案 0 :(得分:81)
jQuery已经处理过了。要检查是否按下了控件,您应该使用:
$(window).keydown(function (e){
if (e.ctrlKey) alert("control");
});
修饰键列表:
e.ctrlKey
e.altKey
e.shiftKey
正如fudgey所说:
e.metaKey
答案 1 :(得分:11)
如果您对按下 Command 键的确切时刻不感兴趣,只需在按下另一个键时按下它,那么您可以使用metaKey
属性事件。
否则,对于keydown
和keyup
个事件,您需要的属性在所有浏览器中均为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;