Aucun événement keypress pour certaines clés dans le navigateur Android
Code ci-dessous fonctionne parfaitement dans Chrome, Firefox, sur IPhone, et même dans les navigateurs tiers sur Android. Toutefois, lorsqu'il est exécuté dans le navigateur natif d'événements clés pour les caractères spéciaux comme Å, Ä et Ö sur mon clavier suédois sont tout simplement pas déclenché.
L'exemple ne doit permettre à l'utilisateur d'entrer un caractère à la fois. Fonctionne comme un charme, à moins que je android, appuyez sur les touches Å, Ä ou ... pour qui je peut entrer n'importe quel nombre de caractères.
Voici un jsFiddle pour ceux qui souhaitent l'essayer: http://jsfiddle.net/x7H6f/. Si u n'ont pas de touches spéciales comme mon suédois ceux imprimés sur votre clavier, les caractères comme é (E) doit faire le "truc".
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Key Event test</title>
</head>
<body>
<input type="text" id="a" name="test" />
<script>
document.getElementById("a").onkeypress = function(e) {
e = e || window.event;
var k = e.keyCode || e.which;
this.value = String.fromCharCode(k);
return false;
}
</script>
</body>
</html>
Et non, keydown et keyup ne fonctionnent pas non plus. Ai-je raté quelque chose, ou est-ce un bug? C'est horriblement gênant lors de l'élaboration suédoise Applications dans PhoneGap!
Merci!
EDIT:
Comme Manor dit, dans sa réponse, le input
événement peut être utilisé. Ici, un violon qui montre les différences entre les keypress
, input
, et change
événements: http://jsfiddle.net/Qxd76/ (utiliser http://jsfiddle.net/Qxd76/show pour afficher le résultat sur un smartphone).
source d'informationauteur Zut
Vous devez vous connecter pour publier un commentaire.
je viens de passer beaucoup de temps sur ce problème. je suis de développer à l'hébreu et à tous hébreu chartes n'est-ce pas de tir événement pour moi.
j'ai trouvé la solution et je vais vous donner pour elle court expliquer avant
lors de l'utilisation de tous les principaux événements de la recherche du navigateur pour la clé en appuyant sur pour. provoquer une raison que toutes les chartes dans d'autres langues de l'anglais natif android browser est inconnu et c'est pourquoi ce n'est pas le feu à tout événement lorsque vous remplissez d'entrée de la charte.
la solution est à la recherche de l'événement dans l'entrée et non sur la clé. par exemple, si nous avons dans la saisie de texte .modifier() la méthode est sera très bien pour nous.
j'utilise dans la méthode addEventListener() et se porte comme un charme.
c'est le code