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