Как сделать что-то, если пользователь нажимает две клавиши в 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.");
}
});
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');
...
}