Ok, qual è la differenza in .keypress e .keydown/.keyup? Attualmente sto usando .keydown che restituisce un valore .which di 38 per la mia chiave, ora se lo cambio in .keypress restituisce un valore di 109 per quella stessa chiave. Qual è la differenza e perché i valori sono diversi per la stessa chiave?jQuery .keypress & .keydown .which
risposta
KeyPress accade dopo KeyDown. Quindi puoi usare KeyDown per determinare quale chiave è, quindi KeyPress per disabilitare quel personaggio.
si dovrebbe leggere il seguente post: http://javascript.info/tutorial/keyboard-events
keydown scattare su ogni pressione di un tasto e dà scan-code. Trigger della chiave dopo il keydown e fornisce il char-code, ma è garantito solo per i caratteri.
Se si preme un pulsante, viene emesso un keydown
e il rilascio lo spara a keyup
. Il keypress
di solito si trova tra questi due.
keydown
e keyup
parlare che chiave è stato modificato. keypress
indica quale carattere che rappresenta la chiave.
Nota che tutto dipende dal browser!
Vedere this article about the differences between the key events as implemented on various browsers.
Sarò d $%^@ d, c'è davvero una differenza con la pressione di un tasto e in tutto questo tempo non l'ho mai realizzato. lol
Vedi il mio violino e provare qualcosa di simile la lettera "r"
http://jsfiddle.net/SpYk3/NePCm/
In qualche modo non ho mai prestato attenzione a questo
Trovato maggiori informazioni:
http://www.quirksmode.org/js/keys.html
"Le due proprietà sono
keyCode
echarCode
. Metti (troppo) semplicemente,keyCode
dice qualcosa sull'effettivo tasto della tastiera che l'utente ha premuto, mentrecharCode
fornisce il valore ASCII del carattere risultante. Questi bit di informazioni non devono essere uguali; ad esempio, un minuscolo 'a' e un maiuscolo 'A' hanno lo stessokeyCode
, perché l'utente preme lo stesso tasto, ma un diversocharCode
perché il carattere risultante è diverso.Explorer e Opera non supporto
charCode
. Tuttavia, forniscono le informazioni sul personaggio inkeyCode
, ma solo cononkeypress
.onkeydown
e-up
keyCode
contiene informazioni chiave."
Sì, quindi è per questo che sono confuso sul perché? – ChrisMJ
come ha sottolineato Jbl nella sua risposta, [questa pagina] (http://javascript.info/tutorial/keyboard-events) descrive il problema solo un po ', ma sembra che non risponda alla domanda per intero . Forse ho letto male la pagina, ma ad un certo punto sottolinea ancora il charcode come se fosse stato tirato su entrambi, semplicemente uno riporta un valore diverso. Forse un'occhiata in qualche vecchio documento di js troverà la risposta. Sto cercando ora, anche il mio oggetto verrà riscritto per includere le differenze di pressione dei tasti – SpYk3HH
anche se suggerirei di evitare keypress in quanto non si attiva come eventi prevedibili come keydown e keyup – SpYk3HH
In casi normali, andare per keyup
:
$(document).keyup(function(e){
console.log(e.which);
});
Motivi:
keydown
mantiene la cottura quando l'utente detiene le chiavi verso il basso, mentrekeypress
ekeyup
fuoco solo una volta .
keypress
non rileva i tasti speciali (ad es.SHIFT
),keydown
ekeyup
fare.
quale browser stai utilizzando? – Mathletics
I diversi browser dovrebbero dare luogo a diversi eventi che non sono comandi chiave diversi – SpYk3HH
Ho un oggetto JSON con ogni evento chiave e ciascuno diviso per browser, lo posterò anche io un violino molto veloce con tutte e tre le pressioni dei tasti e possiamo verificarlo , gimmie come 10 minuti – SpYk3HH