Как сделать что-то, если пользователь нажимает две клавиши в JavaScript

Поэтому я написал этот сценарий, чтобы вы могли использовать сочетания клавиш на своем веб-сайте, и мне было интересно, как сделать несколько клавиш (т.е. вместо того, чтобы просто нажимать клавишу "стрелка влево", это будет "Ctrl + стрелка влево". мой текущий синтаксис:

var arrow = {
    left: 37,
    up: 38,
    right: 39,
    down: 40
};

function DoSomething() {}

$(document).ready(function() { // requires jQuery
    $("body").keydown(function(event) {
        if(event.keyCode == arrow.left) {
            DoSomething();
        }
    }
}

Но то, что я хотел бы сделать, это что-то вроде этого:

var arrow = {
    left: 37,
    up: 38,
    right: 39,
    down: 40
},

ctrl = 17;

function DoSomething() {}

$(document).ready(function() { // requires jQuery
    $("body").keydown(function(event) {
        if(event.keyCode == ctrl && arrow.left) {
            DoSomething();
        }
    }
}

2 ответа

Решение

Объект события, представленный в jQuery, сообщает вам, если ctrl клавиша нажата.

$(document).on("keydown", function (event) {
    if (event.ctrlKey && event.which === arrow.left) {
        console.log("You pressed left, and control.");
    }
});

Демо: http://jsfiddle.net/zcMXR/

JQuery уже делает это. Наряду с отслеживанием того, какая клавиша была нажата, вы также можете получить информацию о том, была ли клавиша нажата в комбинации с alt, ctrl или же shift со свойствами, показанными ниже:

$(document).keydown(function(e) {
      console.log('key code is: ' + e.which + ' ' + (e.ctrlKey ? 'Ctrl' : '') + ' ' +
            (e.shiftKey ? 'Shift' : '') + ' ' + (e.altKey ? 'Alt' : ''));
});

Итак, чтобы проверить, является ли комбинация клавиш Ctrl + Up, ваше состояние будет выглядеть так:

if( e.which == 38 && e.ctrlKey ){
    console.log('You pressed Ctrl+Up');
    ...
}
Другие вопросы по тегам