¿Hay alguna manera de informar al teclado móvil en un dispositivo móvil que los valores posibles para un campo de entrada HTML son un subconjunto de los valores posibles?
Intento expresarme mejor con un ejemplo.
Digamos que tengo un texto de entrada de nombre de usuario:
<input type="text" id="username">al intentar escribir con un dispositivo móvil, el teclado móvil hará tres cosas no deseadas:
Entonces, si quiero escribir j.doe (un ejemplo de un nombre de usuario típico)
y escribo (uno a la vez): j . doe J. Doe
Podría, siendo un usuario avanzado de teclado móvil, intentar obtener los resultados deseados haciendo (por ejemplo, en Swiftkey que tiene flechas de navegación):
j. (y dos caracteres están bien, pero el teclado agrega un espacio después de '.')doey ya terminé, pero para un usuario inexperto, esto es inaceptable (especialmente (1), (3) y (4)).
De alguna manera, me gustaría que el teclado se comporte como uno que escribe en un campo de contraseña (sin bloqueo de mayúsculas activado automáticamente y sin espacios agregados después de '.').
No logré encontrar una solución, ¿alguien sabe una forma de lograr el resultado?
¡Gracias!
Intente desactivar las reparaciones automáticas móviles utilizando estos atributos HTML:
<input type="text" id="username" autocapitalize="off" autocomplete="off" spellcheck="false" autocorrect="off"/>fuente: https://weblog.west-wind.com/posts/2015/jun/15/turn-off-html-input-auto-fixups-for-mobile-devices
Busqué en Google "entrada de ios en minúsculas" y este fue el primer éxito:
Navegador de iPhone predeterminado en mayúsculas para la primera letra de los campos de contraseña
En resumen, agregue los atributos autocapitalize="none" en el campo de entrada y agregue autocomplete="off" y autocorrect="off" para obtener buenas medidas.
Deberá agregar accesorios de autocorrect y autocapitalize a la etiqueta de entrada y configurarlos para que estén deshabilitados.
Ex:
<input type="text" id="username" autocorrect="off" autocapitalize="none">Blog con explicación sobre el mismo
o onkeydown podría convertir el valor tecleado a minúsculas
onkeydown = function keyDown(e) { let keyPressed = String.fromCharCode(e.keyCode).toLowerCase(); ..... };Para estar realmente seguro de que el campo no está en mayúsculas, puede configurar su tipo para que sea email
<input type="email" id="loginId" autocapitalize="off" autocomplete="off" spellcheck="false" autocorrect="off"/>No se realiza ninguna validación, por lo que aún puede ingresar un nombre de usuario en un campo de "correo electrónico".
para obtener esto en JS
var loginInput=document.getElementById("loginId"); loginInput.setAttribute("type","email");