Comment obtenir la touche enfoncée et mettre dans un tableau en JavaScript?
Comment puis-je obtenir la clé qui a été pressé et, au lieu de retourner le code de la clé, mettre la clé dans un tableau?
Par exemple, l'utilisateur appuyez sur 'a'. Ensuite, le code sera mis 'a' - pas de mot de code pour le caractère dans un tableau.
Merci d'avance!
Pourquoi utilisez-vous de propriété de la clé? Essayer ceci: document.onkeydown = function(e) {alert(e.key);}; Il n'est pas besoin de convertir mot de code de caractères.
OriginalL'auteur OOProg | 2010-09-10
Vous devez vous connecter pour publier un commentaire.
Ce que quelque chose comme cela?
Mise à JOUR: Si vous avez besoin précis de caractères de l'information (tels que, la distinction de majuscules, de minuscules, et d'autres choses), assurez-vous de vérifier @Tim de Down commentaires ci-dessous et son autre réponse.
keypress
de l'événement pour obtenir le caractère tapé, pas lakeydown
événement.Selon le quriksmode article, le
keydown
événement qui me semble le plus fiable. La principale différence est que lors de l'utilisation de lakeydown
événement que vous recevez le mêmekeyCode
pour les minuscules et les majuscules (parce que vous êtes en appuyant sur la même touche). Si cela est acceptable ou non, ça dépend de ce que l'OP est la construction. Ai-je raté quelque chose?Avec tout le respect dû à PPK, ce quirksmode tableau est loin d'être aussi utile que unixpapa.com/js/key.html. Le paragraphe intitulé "mot de code et charCode" dans quirksmode contient le point crucial de bien:
keydown
etkeyup
événements n'ont tout simplement pas contenir de caractères de l'information. De tous ses succès, il peut sembler que vous avez avec elle est due au hasard et peu fiables. Si vous êtes inquiet au sujet de l'Opéra de manque de soutien decharCode
, heureusement, l'Opéra prend en charge lawhich
de la propriété, qui, depuis qu'elle fonctionne dans tous les navigateurs IE est plus utile quecharCode
et n'est pas couvert par quirksmode.Points intéressants. Cependant, si nous ne nous soucions pas de caractère de l'information, et ne nécessitent codes de clé (comme lors de la mise en œuvre de la contribution d'un jeu par navigateur), voyez-vous des problèmes dans mon exemple?
Si vous n'avez pas de soins sur le caractère de l'information puis il n'y a pas de problème avec l'aide de
keydown
, mais dans ce caskeyCode
fonctionne bien dans tous les navigateurs, donc il n'y a pas besoin de chercher à tout autre bien. L'OP ne déclarent explicitement qu'il/elle est intéressé dans le personnage de l'information.OriginalL'auteur Daniel Vassallo
Vous avez besoin de la
keypress
événement pour cette.keydown
etkeyup
ne peut pas être utilisé de manière fiable pour obtenir des renseignements sur les caractères. Une excellente explication détaillée de JavaScript pour les principaux événements à http://unixpapa.com/js/key.htmlOriginalL'auteur Tim Down
Daniel réponse est parfait, mais si vous voulez obtenir le caractère réel (pas le code numérique), vous pouvez utiliser cette fonction:
Voir MDN pour plus d'info.
OriginalL'auteur Christopher Scott
Dans votre gestionnaire d'événements (en supposant que
e
est l'objet de l'événement):Avis comment
fromCharCode
renvoie le caractère donné un code de caractère Unicode. Notez également comment j'ai utilisécharCode
au lieu dekeyCode
que c'est plus correct, en rentrant le code de caractère, ce qui est parfois différent du mot de code (vous voulez le personnage).charCode
ainsi, mais il y a certains navigateurs qui ne supportent pas ça: quirksmode.org/js/keys.htmlC'est une situation difficile. D'une part, conformes navigateurs, mot de code est toujours le mot de code, et charcode est toujours la valeur Unicode. De la non-conformité des navigateurs, charcode n'existe pas, et de mot de code varie entre le mot de code ou la valeur Unicode selon le type d'événement. Bien sûr, nous voulons que la valeur Unicode, mais qui ne peut jamais être vu dans le mot de code sur les navigateurs compatibles. En fonction du contexte du site web de l'écrit et de le visiteur démographique, je crois qu'il est temps d'avancer et d'ignorer ces manifestement non conforme navigateurs.
Gestionnaire d'événements pour l'événement qui?
charCode
n'existe que danskeypress
événements. Pour IE,keyCode
dans unkeypress
événement est le code de caractère et vous ne recevez pas de pression de touche événements dans IE pour les non-imprimable touches, de sorte que vous pouvez obtenir des codes de caractères de façon relativement fiable. Voir ma réponse.OriginalL'auteur Delan Azabani
J'ai écrit une bibliothèque appelée keysight de traduire les événements de clavier à touches et les personnages.
OriginalL'auteur B T