将多个键绑定到Keypress事件

时间:2010-11-13 16:22:25

标签: javascript jquery javascript-events event-handling

我目前正在使用此Javascript kepypress代码在按键时触发事件:

$(document).keydown(function(e) {
    switch(e.keyCode) {

    case 39:
        e.preventDefault();
        alert("Arrow Key");
        break;

    case 37:
        e.preventDefault();
        alert("Arrow Key");
    }
});

但我想知道的是,如果我可以而不是绑定一个键绑定两个键的组合。我可以做点什么:

$(document).keydown(function(e) {
    switch(e.keyCode) { 
        case 39 && 37:
            e.preventDefault();
            alert("Arrow Key");
        break;
    }
});

3 个答案:

答案 0 :(得分:25)

如果你想一次检查多个键,你应该只使用一个常规键和一个或多个修改键(alt / shift / ctrl),因为你不能确定在用户的同时可以实际按下两个常规键。键盘(实际上,它们总是被按下但由于键盘的连接方式,PC可能无法理解它。)

您可以使用e.altKey,e.ctrlKey,e.shiftKey字段来检查是否按下了匹配的修饰键。

示例:

$(document).keydown(function(e) {
    if(e.which == 98 && e.ctrlKey) {
        // ctrl+b pressed
    }
});

答案 1 :(得分:3)

为什么不使用if而不是switch

$(document).keydown(function(e) {
    if ((e.keyCode === 37) || (e.keyCode === 39)) {
        e.preventDefault();
        alert("Arrow Key");
    }
});

答案 2 :(得分:3)

您可以使用案例通过:

$(document).keydown(function(e) {
    switch(e.which) { 
        case 39:
        case 37:
            e.preventDefault();
            alert("Arrow Key");
            break;
    }
});

请注意,我使用e.which代替e.keyCode使其在所有浏览器中都有效(jQuery会自动将实际包含密钥代码的属性分配给e.which)。