type="text"- Texto de una línea. Tipo por defecto si type falta o no se reconoce. Para identificadores, códigos postales o tarjetas usa texto y pistas de teclado.
type="search"- Consulta de búsqueda. Semántica de búsqueda y posibles controles nativos para borrar; no añade una regla de formato.
type="tel"- Teléfono. Puede ofrecer teclado telefónico; no impone un formato universal. Usa instrucciones y pattern si tu dominio exige un formato concreto.
type="url"- URL absoluta. Detecta typeMismatch si el valor no tiene sintaxis de URL; no comprueba que el recurso exista ni que sea seguro.
type="email"- Dirección de correo. Comprueba sintaxis básica, no existencia ni propiedad. multiple permite una lista separada por comas.
type="password"- Texto visualmente oculto. Permite minlength, maxlength y pattern. No cifra, no impide pegar y no sustituye HTTPS; usa autocomplete apropiado.
type="number"- Cantidad numérica. min/max limitan el intervalo y step la granularidad. No admite pattern ni maxlength; no lo uses para conservar ceros iniciales.
type="range"- Valor numérico aproximado. Por defecto min=0, max=100 y step=1; el navegador ajusta y limita el valor. required y readonly no aplican.
type="date"- Fecha de calendario. value usa YYYY-MM-DD aunque el selector se presente en el idioma local. min/max son fechas y step se expresa en días.
type="month"- Año y mes con formato YYYY-MM; step en meses. Soporte limitado: puede degradar a texto sin aplicar límites temporales.
type="week"- Año y semana ISO con formato YYYY-Www; step en semanas. Soporte limitado: puede degradar a texto. La semana ISO puede pertenecer a otro año civil.
type="time"- Hora sin zona, HH:mm o HH:mm:ss. step se expresa en segundos, 60 por defecto. El formato enviado no depende del reloj de 12/24 horas de la interfaz.
type="datetime-local"- Fecha y hora locales: YYYY-MM-DDTHH:mm. No contiene zona horaria ni convierte a UTC; conserva la zona por separado cuando el producto la necesite.
type="color"- Selector de color. #RRGGBB es la base interoperable. alpha y colorspace amplían la entrada con soporte parcial; no presupongas soporte por reconocer type=color.
type="checkbox"- Selección independiente. Solo aporta name=value si está marcada y habilitada; sin value se envía on. required exige marcar esa casilla.
type="radio"- Una opción por grupo de radios con el mismo name y propietario de formulario. required exige una selección en el grupo; usa fieldset y legend para la pregunta común.
type="file"- Selección local de archivos. accept orienta el selector, multiple permite varios y capture puede sugerir una cámara. value no permite precargar un archivo.
type="hidden"- Dato sin interfaz y fuera de validación. Su valor sigue siendo visible y manipulable con herramientas del navegador; nunca es un secreto ni una prueba de autorización.
type="button"- Botón sin acción predeterminada; value aporta su nombre visible. Necesita JavaScript para realizar una acción. button permite contenido más rico.
type="submit"- Envía el formulario y activa validación salvo novalidate/formnovalidate. Solo el submitter activado aporta su propio name=value.
type="reset"- Restaura valores y checked iniciales del formulario; no borra necesariamente los campos ni elimina errores de setCustomValidity. Puede provocar pérdida de trabajo.
type="image"- Botón de envío gráfico. Requiere src y alt descriptivo. Aporta coordenadas name.x/name.y del clic, no el value de un botón submit ordinario.