Если вы заботитесь о а также нужно удерживать клавишу и нажимать другую (например: Shift + DEL, DEL, DEL ...), не поднимаясь на первый ключ, чтобы снова активировать событие ... Я изменил @ Комментарий BlakePlumm [скрипка], который прокомментировал комментарий @ lu1s на ответ @ ParthThakkar.
Кроме того, использование jQuery's .on() позволяет прослушивать последовательность клавиш только для определенных элементов. Измените «тело» на «input.selector» или что-то еще.
var map = [];
var down = [];
$(document).on('keydown','body', function(e) {
if(!map[e.which]){
down.push(e.which);
if(down[0] === 68 && down[1] === 69 && down[2] === 86) {
console.log('D + E + V');
} else if(down[0] === 16 && down[1] === 46) {
console.log('SHIFT + DEL');
}
/* more conditions here */
}
map[e.which] = true;
}).keyup(function(e) {
map[e.which] = false;
/* important for detecting repeat presses of
last key while holding first key(s)
(can be shortened. see fiddle) */
var len = down.length;
while (len--) {
if(down[len] === e.which) down.splice(len,1); //removes only the keyup'd key
}
$('.alert').html('');
});
Дополнительные мысли: Если вы только своего рода забота о порядке - то есть, первые ключи просто должны быть вниз, до тех пор, как ваш главный ключ событие стрельбы нажата последней (такие вещи, как CTRL + SHIFT + TAB, TAB, TAB), добавить это условие:
else if(down.length>2) {
if($.inArray(68,down)!=-1 && $.inArray(69,down)!=-1 && down[2] === 86) {
$('.alert').html('A hacky D+E+V was pressed');
}
}
скрипку с большим количеством великолепных вариантов и демо: - http://jsfiddle.net/kstarr/4ftL1p3k/
KeyCode может представлять только один ключ. Попробуйте использовать комбинацию клавиш keydown + keyup +, чтобы обнаружить это. – yent
Возможный дубликат [Может ли jQuery .keypress() обнаруживать одновременно несколько ключей?] (Http://stackoverflow.com/questions/4954403/can-jquery-keypress-detect-more-than-onekey -at-the-same-time) –
Рассмотрите возможность изменения принятого ответа на [this] (http://stackoverflow.com/a/35249618/3853934). Он представляет собой более современный и общий подход. –