/ / Come fare qualcosa se l'utente preme due tasti in javascript - javascript, jquery, tastiera, scorciatoia

Come fare qualcosa se l'utente preme due tasti in javascript - javascript, jquery, tastiera, scorciatoia

Quindi ho scritto questo script in modo da poterlo averescorciatoie da tastiera sul tuo sito web, e mi chiedevo come fare più chiavi (cioè invece di fare solo il tasto "freccia sinistra", sarebbe il "ctrl + freccia sinistra". Ecco la mia sintassi attuale:

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();
}
}
}

Ma quello che mi piacerebbe fare è qualcosa del genere:

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();
}
}
}

risposte:

5 per risposta № 1

L'oggetto evento fornito in jQuery ti dice se il ctrl il tasto viene premuto.

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

demo: http://jsfiddle.net/zcMXR/


1 per risposta № 2

jQuery lo fa già. Oltre a tenere traccia di quale tasto è stato premuto, è anche possibile ottenere informazioni sulla combinazione del tasto con alt, ctrl o shift con le proprietà mostrate di seguito:

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

Quindi, per verificare se la combinazione di tasti è Ctrl + Su, la tua condizione sarà simile a:

if( e.which == 38 && e.ctrlKey ){
console.log("You pressed Ctrl+Up");
...
}