2013-02-18 16 views
15

Sto semplicemente ascoltando per un evento KeyUp di un elemento di input e raccogliere i risultati in una stringa in questo modoJavaScript String.fromCharCode Sensibilità del caso?

word=word+String.fromCharCode(key.keyCode); 

Il problema è che la parola è in maiuscolo, mentre io voglio che sia maiuscole e minuscole. Ad esempio se digito abcef la mia parola accumulata diventa 'ABCEF'.

Nota: ho bisogno di una soluzione javascript pura (senza librerie ..) Qualche idea?

+1

65 è il codice per lettere maiuscole "A", non minuscole. – Pointy

+1

'String.fromCharCode (key.keyCode) .toLowerCase()' ?? – jbabey

+0

Quindi qual è il codice di accesso per la lettera minuscola a? Impossibile trovare una risposta in google ... –

risposta

29

Eventi come keyup e keydown torneranno 65 sia per a e A(e anche per trueevent.shiftKey se questo tasto viene tenuto premuto).

L'evento keypress ritorna keycodes differenti per le lettere maiuscole e minuscole, in modo da ottenere questo caso di lavoro sensibile si consiglia di utilizzare l'evento keypress, e fromCharCode() restituirà la lettera corretta, maiuscole e minuscole.

+5

È sempre possibile verificare se event.shiftKey è vero o falso e applicare un .toLowerCase() – Prusprus

+0

Penso che sia necessario controllare, perché alcuni eventi kepress non possono essere cancellati come keydowns – Ayyash

3

si può sempre chiamare .toLowerCase()

word = word + String.fromCharCode(key.keyCode).toLowerCase(); 

potrebbe avere più senso chiamare .toLowerCase() solo una volta, al punto che si decide hai finito accumulare caratteri.

+0

Vorrei raccomandare contro questo se è disponibile una soluzione nativa. – marksyzm

Problemi correlati