Se vi preoccupate per la ordine e anche bisogno di tenere premuto un tasto e toccare un altro (es: Shift + DEL, DEL, DEL ...), senza dover sollevare la prima chiave per far sparare di nuovo l'evento ... Ho modificato @ Il commento [fiddle] di BlakePlumm che ha esteso il commento di @ lu1s sulla risposta di @ ParthThakkar.
Inoltre, utilizzando jQuery's .on() consente di ascoltare la sequenza di tasti solo su determinati elementi. Cambia 'body' in 'input.selector' o qualsiasi altra cosa.
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('');
});
pensieri supplementari: Se vi interessa soltanto un po sull'ordine - vale a dire, le prime chiavi solo bisogno di essere giù, fino a quando il tasto-firing evento principale è premuto per ultimo (roba come CTRL + MAIUSC + TAB, TAB, TAB), aggiungi questa condizione:
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');
}
}
violino con le opzioni più gloriosi e demo live: - http://jsfiddle.net/kstarr/4ftL1p3k/
fonte
2014-10-12 18:14:31
Il codice chiave può rappresentare solo una chiave. Prova a utilizzare una combinazione di keydown + keyup + flag per rilevare questo. – yent
possibile duplicato di [Può jQuery .keypress() rilevare più di un tasto allo stesso tempo?] (Http://stackoverflow.com/questions/4954403/can-jquery-keypress-detect-more-than-one-key -at-the-same-time) –
Valuta la possibilità di modificare la risposta accettata a [this] (http://stackoverflow.com/a/35249618/3853934). Presenta un approccio più moderno e generale. –