Domanda

Perché non è questo lavoro?

var holdingctrl = false;
$(document).keydown("q",function(e) {
 if(holdingctrl == true) 
 alert("Holding CTRL and pressing Q: Success.");
 e.preventDefault();
});

$(document).keyup("q",function(e) {
 holdingctrl == false 
});

In questo esempio di seguito funziona bene, ma quello che sto facendo male di cui sopra?

$(document).keyup("q",function(e) {
 alert("ONLY pressing Q: Success.");
});
È stato utile?

Soluzione

Si aveva bisogno di un modo per determinare se il controllo è stato in fase di pressione (e.ctrlKey) - Questo dovrebbe funzionare per voi:

  $(document).keyup(function(e) 
    { 
        if (e.ctrlKey && e.keyCode == 81) 
        {
            alert("CTRL+Q Pressed");
        }
    });

demo funzionante qui

Altri suggerimenti

Dipende da cosa si sta cercando di realizzare.

Note Coppia:

  • Dati evento si sta passando dovrebbe essere un oggetto invece di un singolo carattere.
  • il gestore keyup non sta facendo nulla con il confronto ==. Probabilmente significava usare un incarico =.

$(document).keyup( { theChar:"q" }, function(e) {
   holdingctrl = false;
});

Non sono del tutto sicuro di quello che stai cercando di fare con questo frammento di codice, ma è possibile verificare se Ctrl viene premuto utilizzando la proprietà event.ctrlKey:

$(document).keydown(function(e) {
    if (e.ctrlKey && (e.keyCode == 81)) { // ctrl + q
        alert("Pressing Q and ctrl: Success.");
    }
});
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top