El Atributo INPUTMODE

Permite sugerir el tipo de teclado virtual que debe mostrarse en dispositivos móviles o pantallas táctiles al interactuar con un campo de entrada.
El atributo inputmode
en HTML permite sugerir el tipo de teclado virtual que debe mostrarse en dispositivos móviles o pantallas táctiles al interactuar con un campo de entrada. Esto mejora la experiencia del usuario al adaptar la entrada según el contexto, sin afectar la validación de datos. Aquí una guía completa:
¿Qué es inputmode
?
Propósito: Indica al navegador qué tipo de teclado mostrar para campos <input>
o <textarea>
.
No valida datos: Solo afecta la interfaz de entrada, no restringe el tipo de datos ingresados.
Diferencia con type
:
-
type
define el tipo de dato y puede validarlo (ej:type="email"
). -
inputmode
sugiere un teclado específico, pero permite cualquier texto.
Valores de inputmode
Valor | Teclado Sugerido | Ejemplo de Uso |
---|---|---|
none |
Sin teclado (útil para inputs personalizados). | Campos manejados por JavaScript. |
text |
Teclado estándar (predeterminado). | Nombres, comentarios. |
decimal |
Teclado numérico con decimales. | Precios (ej: 19.99). |
numeric |
Teclado numérico sin decimales. | Códigos PIN, números enteros. |
tel |
Teclado para números telefónicos. | Campos de teléfono. |
search |
Teclado con botón de búsqueda. | Barras de búsqueda. |
email |
Teclado con @ y dominio. | Correos electrónicos. |
url |
Teclado con barra (/), .com, etc. | URLs. |
Sintaxis Básica
<input type="text" inputmode="numeric" placeholder="Ingresa tu PIN"> <textarea inputmode="email" placeholder="Correo electrónico"></textarea>
Ejemplos Prácticos
Ejemplo 1: Entrada numérica para un código PIN
<label for="pin">Código PIN:</label> <input type="text" id="pin" inputmode="numeric" pattern="[0-9]*" maxlength="4" >
-
Teclado: Muestra un teclado numérico en móviles.
-
Validación:
pattern="[0-9]*"
restringe a números (solo dígitos).
Ejemplo 2: Entrada de precio con decimales
<label for="precio">Precio:</label> <input type="text" id="precio" inputmode="decimal" pattern="[0-9]+([.,][0-9]+)?" placeholder="Ej: 29.99" >
Teclado: Muestra teclado numérico con punto o coma decimal.
Ejemplo 3: Campo de búsqueda optimizado
<input type="search" inputmode="search" placeholder="Buscar productos..." >
Teclado: Incluye un botón de búsqueda en algunos dispositivos.
Combinación con type
y pattern
Para mejorar la experiencia, combina inputmode
con:
-
type
: Define el tipo de dato esperado. -
pattern
: Valida el formato usando expresiones regulares.
Ejemplo:
<input type="tel" inputmode="tel" pattern="[0-9]{10}" placeholder="Número de teléfono" >
Compatibilidad en Navegadores
-
Soportado en: Chrome, Firefox, Edge, Safari (iOS/Android) y navegadores móviles modernos.
-
Limitaciones:
-
Algunos navegadores en escritorio ignoran
inputmode
. -
En iOS,
decimal
ynumeric
pueden mostrar el mismo teclado.
-
Buenas Prácticas
-
Usa
inputmode
junto atype
ypattern
: Mejora la usabilidad y validación. -
Evita
none
en campos de texto: Podría confundir al usuario al ocultar el teclado. -
Prueba en dispositivos móviles: Verifica que el teclado sugerido sea el adecuado.
Errores Comunes
Error 1: Confundir inputmode
con type
<!-- Incorrecto: inputmode no valida el correo --> <input type="text" inputmode="email"> <!-- Correcto --> <input type="email" inputmode="email">
Error 2: Usar inputmode="numeric"
para decimales
<!-- Incorrecto: "numeric" no incluye punto decimal --> <input inputmode="numeric" placeholder="Precio"> <!-- Correcto --> <input inputmode="decimal" placeholder="Precio">
Conclusión
El atributo inputmode
es una herramienta poderosa para optimizar la entrada de datos en dispositivos móviles. Al sugerir teclados específicos, reduces errores y aceleras la interacción del usuario. ¡Implántalo en formularios críticos para una experiencia fluida!