No hay eventos de pulsación de tecla para ciertas teclas en el navegador de Android
l código de @Below funciona perfectamente en Chrome, Firefox, en iPhone e incluso en navegadores de terceros en Android. Sin embargo, cuando se ejecuta dentro del navegador nativo, los eventos clave para caracteres especiales como Å, Ä y Ö en mi teclado sueco simplemente no se activan.
El ejemplo solo debería permitir al usuario ingresar un solo carácter a la vez. Funciona de maravilla, a menos que en Android presione teclas como Å, Ä o Ö para las cuales puedo ingresar cualquier número de caracteres.
Aquí hay un jsFiddle para cualquiera que desee probarlo:http: //jsfiddle.net/x7H6f. Si no tiene teclas especiales como las suecas impresas en su teclado, caracteres como é (mantenga presionado E) deberían hacer el "truco".
<!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>
Y no, keydown y keyup tampoco funcionan. ¿Me perdí algo o es un error? ¡Es terriblemente molesto desarrollar aplicaciones suecas en PhoneGap!
¡Gracias
EDITAR Como Manor dice en su respuesta, elinput
e puede usar @ event. Aquí hay un violín que demuestra las diferencias entre lakeypress
, input
ychange
eventos:http: //jsfiddle.net/Qxd76 (utilizarhttp: //jsfiddle.net/Qxd76/sho para ver el resultado en un teléfono inteligente).