CodeAventura
HTML
▸Interactividad▸Formularios básicos

Misión

●localhost:5173
12 / 16Formularios básicos
Anterior

Formularios

La conversación comienza

Hasta ahora, tu web ha sido un monólogo — tú hablas, el usuario escucha. Los formularios cambian eso. Son la forma en que el usuario te responde: su nombre, su email, su opinión, su pedido.

Cada vez que te registras en un sitio, buscas un vuelo, o envías un mensaje de contacto, hay un formulario detrás. Son el puente entre el usuario y tu aplicación.

La etiqueta <form>

Todo formulario vive dentro de una etiqueta <form>:

El <form> es el contenedor que agrupa todos los campos relacionados. Más adelante, cuando aprendas a enviar datos a un servidor, el formulario será quien empaquete toda la información.

El elemento <input>: el camaleón

El <input> es probablemente el elemento más versátil de HTML. Dependiendo de su atributo type, puede ser un campo de texto, un selector de fecha, un control deslizante, un campo de contraseña...

Por defecto, sin especificar tipo, es un campo de texto. Estas dos líneas son equivalentes:

Observa que <input> es una etiqueta de auto-cierre — como <img>, no tiene contenido dentro.

Placeholder: la pista fantasma

Un campo vacío no dice mucho. El placeholder muestra un texto de ayuda que desaparece cuando el usuario empieza a escribir:

Es útil, pero tiene un problema: cuando el usuario escribe, el placeholder desaparece. Si tiene muchos campos, puede olvidar qué se esperaba en cada uno.

Label: la etiqueta que permanece

Para eso existe <label> — una etiqueta descriptiva que siempre está visible:

Observa la conexión mágica:

  • El for del label apunta al id del input
  • Cuando haces clic en el label, el input se activa automáticamente

Esto no es solo conveniente — es accesibilidad. Los lectores de pantalla usan esta conexión para anunciar qué campo es cada uno. En móviles, hace que el área "tocable" sea mucho más grande.

La combinación ganadora

Mi recomendación: usa ambos. El label describe, el placeholder ejemplifica:

Como tanto <label> como <input> son elementos en línea, aparecerán uno al lado del otro. Si quieres el input debajo del label, puedes usar un <br> para forzar un salto de línea:


Los muchos rostros del input

El atributo type transforma completamente el comportamiento del input. Aquí están los más comunes:

type="number" — Solo números

Aparecen flechas para incrementar/decrementar. El teclado en móviles muestra solo números.

type="range" — El control deslizante

Perfecto para seleccionar un valor en un rango (volumen, brillo, precio máximo...).

type="date" — Selector de fecha

El navegador muestra un calendario nativo. Adiós a escribir fechas en formatos incorrectos.

type="time" — Selector de hora

Similar al anterior, pero para horas.

type="email" — Correo electrónico

Parece un input de texto normal, pero:

  • El navegador valida que sea un email válido
  • En móviles, el teclado incluye @ y .com
  • Puede sugerir emails que hayas usado antes

type="password" — Contraseñas

Los caracteres se muestran como •••••. Nadie mirando por encima del hombro verá lo que escribes.


El poder de los tipos correctos

Usar el type correcto no es solo cosmético. Mejora:

  • Validación — El navegador rechaza emails mal formados
  • Experiencia móvil — Teclados adaptados a cada tipo de dato
  • Accesibilidad — Los lectores de pantalla anuncian el tipo de campo
  • Autocompletado — El navegador puede sugerir datos guardados

Es un pequeño cambio que hace una gran diferencia.

Tu duodécimo desafío 🚀

Crea un mini formulario de contacto con:

  1. Un campo para el nombre (con label)
  2. Un campo para el email (con type="email")
  3. Usa placeholders para dar ejemplos

Los formularios son preguntas. Asegúrate de hacerlas bien...