Formularios básicos en HTML: label, input y validación nativa

Construye formularios claros, accesibles y funcionales con HTML puro.

Un formulario bueno empieza con etiquetas claras y tipos de input correctos.

Cada input debe tener su label asociado con `for` e `id`.

La validación nativa (`required`, `minlength`, `type=email`) cubre muchos casos sin JavaScript.

Placeholder ayuda como ejemplo, pero no sustituye al label.

  • Si el usuario duda qué escribir, el formulario está mal diseñado. ✍️
  • Elige `type` según dato real: `email`, `password`, `tel`, `number`... Esto mejora teclado móvil y validación.
  • Agrupa campos relacionados con `fieldset` y `legend` cuando la forma tenga varias partes.
  • Simple, claro y mantenible.
  • No uses solo placeholder como etiqueta.

Fundamentos de un formulario usable

Si el usuario duda qué escribir, el formulario está mal diseñado. ✍️

Elige `type` según dato real: `email`, `password`, `tel`, `number`... Esto mejora teclado móvil y validación.

Agrupa campos relacionados con `fieldset` y `legend` cuando la forma tenga varias partes.

Patrón base que deberías repetir

Simple, claro y mantenible.

  • No uses solo placeholder como etiqueta.
  • Define `name` en controles que se van a enviar.
  • Mantén labels cortos y concretos.

Errores que debes evitar desde ya

Son fallos pequeños que rompen conversiones.

  • Inputs sin label asociado.
  • Usar `type="text"` para email o teléfono.
  • No marcar obligatorios los campos críticos.
  • Botón sin `type="submit"` en formularios simples.
HTML
11

Formularios básicos en HTML: label, input y validación nativa

Construye formularios claros, accesibles y funcionales con HTML puro.

Código del tema: <form> | <label for> | <input type> | required

📘 Teoría

Fundamentos de un formulario usable

Si el usuario duda qué escribir, el formulario está mal diseñado. ✍️

Elige `type` según dato real: `email`, `password`, `tel`, `number`... Esto mejora teclado móvil y validación.

Agrupa campos relacionados con `fieldset` y `legend` cuando la forma tenga varias partes.

1

label + for

Conecta texto y control de forma explícita.

2

type correcto

Ahorra errores y mejora UX.

3

required

Evita envíos vacíos de forma nativa.

Patrón base que deberías repetir

Simple, claro y mantenible.

  • No uses solo placeholder como etiqueta.
  • Define `name` en controles que se van a enviar.
  • Mantén labels cortos y concretos.
Formulario de contacto básico
<form>
  <label for="nombre">Nombre</label>
  <input id="nombre" name="nombre" type="text" required />

  <label for="email">Email</label>
  <input id="email" name="email" type="email" required />

  <label for="mensaje">Mensaje</label>
  <textarea id="mensaje" name="mensaje" rows="4" required></textarea>

  <button type="submit">Enviar</button>
</form>

Errores que debes evitar desde ya

Son fallos pequeños que rompen conversiones.

  • Inputs sin label asociado.
  • Usar `type="text"` para email o teléfono.
  • No marcar obligatorios los campos críticos.
  • Botón sin `type="submit"` en formularios simples.

🧪 Aprende probando

Ejemplo Ejemplo guiado: mini registro Formulario corto con validación nativa y estructura correcta.
Ejemplo Demo interactiva: estructura nativa con fieldset, legend y optgroup Explora una base profesional de formulario con agrupación semántica y controles clave.
Ejemplo Demo interactiva: laboratorio de formulario nativo Cambia label, tipo, ayuda y validación para ver cómo mejora un campo real sin usar JavaScript.

🏁 Retos

Reto Reto: vuelve obligatorio el nombre Añade la validación mínima para evitar envíos vacíos.

🧰 Recursos

Test

Comprueba tus conocimientos con un test sobre HTML.

Test de HTML
CodePen: Clean Registration Form
Abrir en CodePen

¿Qué es esto?

Soy Cristian Eslava y a veces hago webs para procrastinar yo y vosotros 😉.

Esta la hice en febrero de 2026 para facilitar el aprendizaje de mis alumnxs. Aprender desarrollo web practicando. La idea es que crezca semanalmente con nuevos temas, tests y retos.

Inspirado en MDN, en W3Schools, en Codepen, en el crack de Manz y en mil sitios de documentación sobre desarrollo web. Quería aportar además de bloques teóricos con ejemplos, la gamificación de los retos y el sistema de test que ya tenía en culTest .

Si te gustó, si no te gustó, si quieres saludarme, o invitarme a 🍻 no dudes en escribirme en cristianeslava@gmail.com .