Inputs numéricos, fechas, color, rango y archivos | Nicolás Garzón
Inicio Wiki HTML Inputs numéricos, fechas, color, rango y archivos Volver a HTMLHTML
Inputs numéricos, fechas, color, rango y archivos Tipos de input para números, fechas, horas, color, rangos y archivos, con sus valores, límites, validación y comportamiento en distintos dispositivos.
Última actualización Actualizada 23 de jul de 2026 Nota anteriorCitas, código, datos, tiempo y ediciones Nota siguiente Imágenes responsive con srcset y sizes HTML
Copiar < label for = " quantity" > Cantidad</ label>
< input
id = " quantity"
name = " quantity"
type = " number"
min = " 1"
max = " 100"
step = " 1"
> Aporta controles numéricos y validación de rango/pasos.
No es apropiado para valores que parecen números pero no se calculan:
Teléfono.
Código postal.
Documento de identidad.
Número de tarjeta.
Esos datos pueden tener ceros iniciales, signos o formatos propios; utiliza text/tel e inputmode cuando corresponda.
HTML
Copiar < input type = " number" min = " 0" step = " 0.01" > Define incrementos válidos relativos a una base. Valores decimales pueden tener matices de representación; el servidor debe validar y usar un modelo monetario correcto.
HTML
Copiar < input type = " number" step = " any" > Permite cualquier valor numérico válido dentro de otros límites.
JavaScript puede leer input.valueAsNumber, que devuelve número o NaN. El atributo HTML enviado sigue construyéndose desde el valor textual.
HTML
Copiar < label for = " volume" > Volumen</ label>
< input id = " volume" name = " volume" type = " range" min = " 0" max = " 100" value = " 50" >
< output for = " volume" > 50</ output> Representa un valor aproximado dentro de un rango. El valor exacto debe mostrarse cuando importa.
No es apropiado para cantidades donde el usuario necesita escribir o comparar números precisos sin feedback.
HTML
Copiar < label for = " start-date" > Fecha de inicio</ label>
< input id = " start-date" name = " startDate" type = " date" > El UI se localiza, pero el valor enviado utiliza formato normalizado como YYYY-MM-DD.
No representa zona horaria ni instante; representa una fecha civil.
HTML
Copiar < input type = " time" name = " meetingTime" step = " 900" > Representa hora local sin zona horaria. Para programar un evento global necesitas combinar fecha, zona y reglas del dominio.
HTML
Copiar < input type = " datetime-local" name = " appointment" > No incluye offset ni zona. El servidor debe saber en qué zona interpretar el valor.
No existe un datetime moderno con selección automática de zona dentro de HTML.
HTML
Copiar < input type = " month" name = " billingMonth" >
< input type = " week" name = " planningWeek" > El soporte visual varía. Ofrece instrucciones o fallback apropiado para navegadores objetivo.
Las semanas siguen un sistema de numeración definido; no asumas que coincide con todas las reglas empresariales.
HTML
Copiar < input
type = " date"
min = " 2026-07-23"
max = " 2026-12-31"
> Aportan constraint validation, pero no impiden solicitudes modificadas. Repite las reglas en servidor.
HTML
Copiar < label for = " accent" > Color de acento</ label>
< input id = " accent" name = " accent" type = " color" value = " #7c3aed" > El valor común es un color serializado. La interfaz y soporte de alpha/espacios de color pueden variar con la evolución del estándar.
No utilices solo una muestra de color para comunicar significado; muestra también nombre o resultado cuando sea necesario.
HTML
Copiar < label for = " resume" > Hoja de vida</ label>
< input
id = " resume"
name = " resume"
type = " file"
accept = " application/pdf"
> El navegador permite seleccionar archivos. El servidor debe validar:
Tamaño.
Tipo real y firma.
Nombre.
Contenido malicioso.
Permisos y almacenamiento.
accept es una pista para el selector, no una barrera de seguridad.
HTML
Copiar < input type = " file" name = " attachments" multiple > Permite varios archivos bajo el mismo nombre.
HTML
Copiar < input
type = " file"
accept = " image/*"
capture = " environment"
> Puede sugerir cámara frontal o trasera en dispositivos compatibles. El soporte y comportamiento varían.
Por privacidad, el valor visible de file input no expone normalmente la ruta real. Puede aparecer algo como C:\fakepath\file.pdf.
No intentes obtener rutas locales del usuario.
HTML
Copiar < input type = " hidden" name = " csrfToken" value = " ..." > Se envía sin interfaz visible. No es secreto: cualquiera puede inspeccionarlo o modificarlo.
Puede transportar IDs, tokens CSRF y estado firmado, siempre con validación de servidor.
HTML
Copiar < div>
< label for = " budget" > Presupuesto inicial</ label>
< input
id = " budget"
name = " budget"
type = " number"
min = " 0"
step = " 1000"
inputmode = " numeric"
required
>
</ div>
Usar number para teléfono o documento.
Confiar en min/max como seguridad.
Usar range sin mostrar el valor.
Interpretar date como instante UTC.
Recibir datetime-local sin definir zona.
Depender del picker visual en todos los navegadores.
Confiar en accept para validar archivos.
Intentar leer la ruta local.
Guardar secretos en hidden.
Comunicar estados únicamente por color.
Number se reserva para cantidades calculables.
Step define incrementos válidos.
Range representa selección aproximada y necesita feedback.
Date/time controls no siempre incluyen zona horaria.
Pickers y soporte visual varían.
Accept y capture son sugerencias.
Los archivos requieren validación fuerte de servidor.
Hidden no significa privado.
¿Por qué un número de identificación no debería usar normalmente type="number"?
Respuesta Porque es un identificador, no una cantidad: puede tener ceros iniciales, longitud fija o caracteres de formato y no se realizan operaciones aritméticas sobre él.
Checkbox y radio modela elecciones independientes y exclusivas.