jquery: keydown, keyup, piccolo frammento, perché non è questo lavoro?
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.");
});
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");
}
});
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