Menu

Tipos de input en HTML: los 22 tipos de la etiqueta input

Todos los tipos de la etiqueta <input> de HTML en un solo lugar: text, email, password, number, range, date y time, color, file, hidden y el resto, con lo que valida cada uno, el teclado que abre en los teléfonos y los atributos que comparten.

Esta página incluye editores ejecutables: edita, ejecuta y ve el resultado al instante.

La etiqueta input y sus tipos

<input> es un campo de formulario, y su atributo type decide de qué clase. La misma etiqueta crea un cuadro de texto, un control deslizante, un selector de fecha o un selector de color. Prueba cada campo de abajo y pulsa Submit para ver lo que envía el formulario:

<input> es un elemento vacío, así que no tiene etiqueta de cierre. Su name es la clave con la que se envía el valor, y value es el valor inicial. Un type ausente o mal escrito da un campo de texto normal.

Todos los tipos de input en HTML

typeQué esNotas
textUna línea de textoEl valor por defecto
passwordTexto mostrado como puntosNo se cifra por sí solo; envíalo por HTTPS
emailUna dirección de correoValida el formato; tecla @ en los teclados de teléfono
urlUna dirección webDebe empezar por un esquema como https://
telUn número de teléfonoTeclado telefónico en móvil, sin comprobar el formato
searchUn cuadro de búsquedaA menudo muestra un botón para borrar
numberUn númeroBotones de incremento, min, max, step
rangeUn control deslizanteImpreciso a propósito; el valor es un número
dateUna fechaEl valor es YYYY-MM-DD
timeUna hora del díaEl valor es HH:MM (formato de 24 horas)
datetime-localFecha y hora, sin zona horariaEl valor es YYYY-MM-DDTHH:MM
monthUn año y un mesNo lo admiten todos los navegadores
weekUn año y un número de semanaNo lo admiten todos los navegadores
colorUn selector de colorEl valor es #rrggbb en minúsculas
checkboxUna casilla de activar y desactivarConsulta checkbox en HTML
radioUna opción de un grupoConsulta radio button en HTML
fileUn selector de archivosaccept, multiple
hiddenUn valor que se envía pero no se muestraPara ID y tokens
submitUn botón de envío<button type="submit"> es más flexible
resetUn botón de reinicioRara vez es buena idea
buttonUn botón que no hace nada por sí soloPara JavaScript
imageUn botón de envío dibujado como imagenTambién envía las coordenadas del clic

Tipos de texto y teclados de teléfono

email, url, tel, search y text parecen un cuadro de texto en el escritorio. La diferencia está en la validación y, en los teléfonos, en qué teclado se abre. El borde de este ejemplo se vuelve verde o rojo según juzga el navegador el valor:

  • ada@example es un correo válido para el navegador: solo comprueba que haya texto, @ y un dominio, no que el dominio tenga un punto. La comprobación real ocurre en el servidor.
  • example.com no es una url válida, porque no tiene esquema. https://example.com sí lo es.
  • tel acepta cualquier cosa. Los formatos de teléfono cambian demasiado entre países, así que no hay comprobación integrada; añade un pattern si la necesitas.
  • inputmode="numeric" pide a los teléfonos un teclado de dígitos sin los problemas de type="number", y por eso es la opción correcta para códigos postales, códigos de un solo uso y números de tarjeta.

number y range

Los dos aceptan min, max y step. number es para valores exactos; range es un control deslizante para valores en los que el número exacto importa menos. Un control deslizante no muestra ningún número, así que acompáñalo de un <output>:

step vale 1 por defecto en number, así que un campo de precio sin step="0.01" rechaza 4.99 al enviar el formulario. En JavaScript, input.value siempre es una cadena; usa input.valueAsNumber para obtener un número.

Fechas y horas

Los tipos de fecha y hora abren el selector propio del navegador. Lo que ve el lector sigue su configuración regional (09/24/2026, 24.09.2026), pero el valor siempre tiene el mismo formato fijo:

Ese formato fijo es lo que recibe el servidor y lo que lee JavaScript, así que nunca tienes que analizar "24.09.2026". min y max usan el mismo formato. datetime-local no tiene zona horaria: si importa, conviértela en el servidor con la zona del lector.

color y file

accept="image/*" limita el selector de archivos a imágenes (y ofrece la cámara en los teléfonos); también acepta extensiones, como accept=".pdf,.docx". Solo es una pista para el selector, así que comprueba el tipo de archivo en el servidor. multiple permite varios archivos. Una subida real necesita además method="post" y enctype="multipart/form-data" en el formulario.

Sugerencias con datalist

Un <datalist> le da a un campo de texto una lista de sugerencias y sigue permitiendo cualquier valor. Conéctalos con el atributo list:

Escribe "ja" en el campo para ver las sugerencias que coinciden. A diferencia de un select, el lector puede escribir un valor que no está en la lista.

Atributos que funcionan en los inputs

AtributoHace
nameLa clave con la que se envía el valor
valueEl valor inicial
placeholderUna pista que se muestra mientras el campo está vacío (no es una etiqueta)
requiredHay que rellenarlo antes de enviar
disabledNo se puede usar y no se envía
readonlyNo se puede editar, pero se envía
autocompleteQué autocompletar: email, name, current-password, one-time-code, off
min, max, stepLímites para números, rangos, fechas y horas
minlength, maxlengthLímites de longitud para los tipos de texto
patternUna expresión regular con la que debe coincidir el valor entero
inputmodeQué teclado de teléfono mostrar: numeric, decimal, email, tel, url
listEl id de un <datalist>
multipleVarios valores, para email y file
acceptTipos de archivo para file

Errores comunes

  • type="number" para teléfonos, códigos postales o números de tarjeta. No son cantidades. Usa tel o text con inputmode="numeric".
  • Un campo de precio sin step="0.01". Los valores decimales no pasan la validación.
  • Usar placeholder como etiqueta. Desaparece en cuanto el lector escribe.
  • Confiar en accept o type="email" para la seguridad. Son comodidades; el servidor vuelve a comprobar.
  • type="month" o type="week" sin alternativa. Algunos navegadores muestran un campo de texto normal.
  • Una etiqueta de cierre </input>. <input> es vacío.

Preguntas frecuentes

¿Cuántos tipos de input hay en HTML?

22: button, checkbox, color, date, datetime-local, email, file, hidden, image, month, number, password, radio, range, reset, search, submit, tel, text, time, url y week. Un tipo desconocido o ausente se comporta como text.

¿Cuál es el tipo de input por defecto en HTML?

text. Un <input> sin type, o con un tipo que el navegador no conoce, es un campo de texto de una sola línea.

¿Debo usar type="number" para teléfonos o códigos postales?

No. number es para cantidades: añade botones de incremento y rechaza el +, los espacios y los guiones que tienen los números de teléfono. Usa type="tel" para teléfonos, y type="text" con inputmode="numeric" para códigos como el código postal y los números de tarjeta.

¿Qué formato usa input type date?

El valor siempre es YYYY-MM-DD, como 2026-09-24, sea cual sea el formato que el lector ve en pantalla. La presentación sigue la configuración regional del lector; el valor que se envía y que leen los scripts no.

¿La etiqueta input necesita etiqueta de cierre?

No. <input> es un elemento vacío: escribe <input type="text" name="city">. Un </input> de cierre no es válido, y la barra de autocierre en <input /> está permitida pero no hace nada.

Coddy programming languages illustration

Aprende a programar con Coddy

COMENZAR