keycode est toujours à zéro dans Chrome pour Android
J'ai besoin de détecter le code de touche pour une recherche personnalisée sur mon site web, mais le mot renvoie toujours zéro sur Chrome pour Android (à l'exception de la touche retour arrière, qui renvoie 8). Quelqu'un at-il vécu cela, et comment avez-vous entoure? Notre site fonctionne sur tous les navigateurs, sauf google Chrome pour Android est parce que nous ne pouvons pas détecter une non-zéro du mot de code ou charcode.
Je suis sous Chrome 27.0.1453.90 sur Android 4.1.2 Jelly Bean. Le problème peut être dupliqué avec quelque chose d'aussi simple que:
alert(event.keyCode);
- Pourriez-vous s'il vous plaît poster ce que vous êtes en train de travailler avec?
- Je suis sous Chrome 27.0.1453.90 sur Android 4.1.2 Jelly Bean, Le problème peut être dupliqué avec quelque chose d'aussi simple que:
alert(event.keycode);
Sur Chrome pour Android, a-z toutes return 0 pour le mot de code et de retour arrière retourne 8. Je ne peux pas comprendre aucun moyen de détecter ce que vous appuyez sur la touche avec ce navigateur. - êtes-vous de vérifier le keydown ou événement keypress? Si c'est keydown, c'est très bizarre, on dirait que c'est le retour de la charCode (Qui est de 0 sur keydown) au lieu du mot de code... Que sur la vérification de la keyIdentifier ?
- Ajout d'un JSbin: jsbin.com/iLEnilAb/8/edit?html,sortie
Vous devez vous connecter pour publier un commentaire.
ci-dessous la solution aussi travailler pour moi. il pourrait être utile pour d'autres personnes aussi.
Nous avons rencontré ce problème récemment sur la Chine, Android téléphone Meizu MX3, qui a profondément personnalisé OS basé sur Android 4.4.4.
La valeur par défaut browswer et Chrome fonctionne très bien, mais pour d'étranges raisons, nous ne savons pas, événement.keyCode, événement.charCode et événement.qui return 0 tout le temps dans certains autres navigateurs(comme CM Browser ou webview de Wechat app).
Nous avons résolu ce problème en vérifiant le dernier caractère que vous saisissez, par exemple 'A' ou ' '(espace), puis nous le convertir en code ascii à l'aide de charCodeAt comme "Un".charCodeAt(0) qui renvoie 97, qui est le char le code dont nous avons besoin.
Mais nous ne pouvons déterminer le char de code de caractères visibles à l'aide de cette stratégie, qui répond à nos besoins actuels en remercier dieu.
Espère que vous les gars pouvez obtenir un peu d'inspiration de ce.
Que j'ai rencontré le même problème avec les Appareils Android de SonyXperia et HTC. J'ai de développement d'application hybride où je suis la validation Montant champ de texte par la lecture de
event.keyCode()
du char surkeydown
cas de champ de texte, afin que je puisse autoriser uniquement les chiffres et le point(.) char à être entré. J'ai essayé, mais il n'a pas travaillé, revenant toujours 0 dans ces dispositifs.Plus tard, je suis venu avec d'autres solution avec
keyup
de l'événement et de l'omble de correspondance par le biais de l'Expression Régulière:J'espère que cela peut aider pour les gens qui face à ce problème. Bonne Chance.
keyCode
0 pour htc appareils fonctionnantandroid kitkat
version. comment avez-vous résolu ?J'ai été confronté à ce problème et c'est ainsi que j'ai trouvé comment résoudre le problème.
vous pouvez voir les logs de votre navigateur sur votre ordinateur de bureau.
Et c'est de cette façon que j'ai trouvé que l'événement keydown était en fait déclenché par un événement unique appelé "textInput", qui contient l'information à l'intérieur de l'événement.originalEvent.les données.
Espère que cela vous fait gagner du temps et bonne chance!
Le vrai moyen d'obtenir le mot de code est à utiliser
Cette propriété sur l'objet de l'événement est de normaliser le
event.keyCode
de la propriété. Vous pouvez lire à ce sujet également dans la documentation de jQuery ici ou dans MDN iciD'une autre manière, j'ai beaucoup d'expérience avec les événements de clavier sur les appareils android.
Android navigateur a parfois des difficultés avec les événements de clavier en raison de la fragmentation de l'appareil (différentes Rom entre les dispositifs ou clavier externe pour les applications). Le meilleur moyen est d'essayer d'utiliser tous les événements de clavier (keydown, keyup et keypress) et de la comparer tous les résultats pour obtenir la touche enfoncée.
Le meilleur moyen est d'utiliser en "entrée" de l'événement et obtenir tous les temps de la dernière charte. L'événement d'entrée peut contrôler, comme dans ma réponse ici.
event.which
) continue à se comporter bizarrement à l'égard de certaines touches. par exemple, j'ai constaté qu'il est parfois nécessaire d'envoyer alt+<char>, de se faire reconnaître comme un simple <char> (en dehors d'un champ de texte) et beaucoup de touches spéciales comme à la maison/à la fin de retour à 0.Pour référence
Si quelqu'un se creuser encore il.Problème apparaît sur stock Samsung clavier pour
android
appareils.Au lieu d'utiliser
onkeyup
.Besoin d'utiliser charCode au lieu de keyCode
changer le type de l'entrée à l'tél :
<input type="tel">
ce sera vous permettent d'enregistrer le mot de code mais il ne marche pas le journal de la touche retour arrière, et il pourrait forcer le clavier sur mobile uniquement des chiffres.