cmd + s和ctrl + s的jquery按键事件

时间:2012-07-16 10:02:10

标签: javascript jquery html css macos

使用上一个问题中的一个例子我有:

$(window).keypress(function(event) {
    if (!(event.which == 115 && event.ctrlKey) && !(event.which == 19)) return true;
    $("form input[name=save]").click();
    event.preventDefault();
    return false;
});

是否也可以将其更改为适用于Mac cmd密钥?

我尝试了(!(event.which == 115 && (event.cmdKey || event.ctrlKey)) && !(event.which == 19)),但这不起作用。

3 个答案:

答案 0 :(得分:24)

使用 event.metaKey 检测Command键

$(document).keypress(function(event) {
    if (event.which == 115 && (event.ctrlKey||event.metaKey)|| (event.which == 19)) {
        event.preventDefault();
        // do stuff
        return false;
    }
    return true;
});

答案 1 :(得分:4)

要检测ctrl+scmd+s,您可以这样使用:

Working jsFiddle.

<强> jQuery的:

var isCtrl = false;
$(document).keyup(function (e) {
 if(e.which == 17) isCtrl=false;
}).keydown(function (e) {
    if(e.which == 17) isCtrl=true;
    if(e.which == 83 && isCtrl == true) {
        alert('you pressed ctrl+s');
    return false;
 }
});

source (includes all keyboard shorcuts and buttons)

答案 2 :(得分:2)

这对我有用:

$(document).keypress(function(event) {
    if ((event.which == 115 || event.which == 83) && (event.ctrlKey||event.metaKey)|| (event.which == 19)) {
        event.preventDefault();
        // do stuff
        return false;
    }
    return true;
});