HTML: Formularios HTML
Descubre cómo crear formularios HTML efectivos para interactuar con usuarios y recopilar datos en la web de forma accesible y práctica.
Aprende HTML GRATIS y certifícateFormularios HTML: Interacción con el usuario en la web
Los formularios son elementos fundamentales en el desarrollo web que permiten la interacción entre usuarios y aplicaciones. Desde simples campos de texto hasta complejos sistemas de envío de datos, los formularios HTML constituyen la base para recopilar información de los visitantes de un sitio web.
¿Qué son los formularios HTML?
Un formulario en HTML es una sección de un documento que contiene controles interactivos que permiten a los usuarios enviar información a un servidor web. Estos controles incluyen campos de texto, casillas de verificación, botones de radio, menús desplegables y muchos más elementos que facilitan la entrada de datos.
La estructura básica de un formulario se crea mediante la etiqueta <form>
, que actúa como contenedor para todos los elementos interactivos:
<form action="/procesar-datos" method="post">
<!-- Elementos del formulario -->
<input type="text" name="nombre">
<button type="submit">Enviar</button>
</form>
Elementos principales de un formulario
Etiqueta form
La etiqueta <form>
es el contenedor principal de todo formulario HTML. Sus atributos más importantes son:
- action: Define la URL donde se enviarán los datos del formulario
- method: Especifica el método HTTP para enviar los datos (get o post)
<form action="/procesar-registro" method="post">
<!-- Contenido del formulario -->
</form>
Campos de entrada (input)
El elemento <input>
es el más versátil dentro de los formularios, ya que puede cambiar su comportamiento según el valor de su atributo type
:
<form>
<!-- Campo de texto simple -->
<input type="text" name="username" placeholder="Nombre de usuario">
<!-- Campo de contraseña (oculta los caracteres) -->
<input type="password" name="password" placeholder="Contraseña">
<!-- Casilla de verificación -->
<input type="checkbox" name="acepta" id="terminos">
<label for="terminos">Acepto los términos y condiciones</label>
<!-- Botón de radio -->
<input type="radio" name="plan" id="basico" value="basico">
<label for="basico">Plan Básico</label>
<input type="radio" name="plan" id="premium" value="premium">
<label for="premium">Plan Premium</label>
</form>
Etiquetas (label)
Las etiquetas <label>
son esenciales para la accesibilidad y usabilidad de los formularios. Asocian un texto descriptivo con un control de formulario:
<label for="email">Correo electrónico:</label>
<input type="email" id="email" name="email">
El atributo for
del label debe coincidir con el id
del elemento de formulario al que hace referencia. Esto permite que al hacer clic en la etiqueta, se active automáticamente el campo correspondiente.
Áreas de texto
El elemento <textarea>
crea un campo de texto multilínea, ideal para comentarios o descripciones extensas:
<label for="comentario">Déjanos tu comentario:</label>
<textarea id="comentario" name="comentario" rows="4" cols="50"></textarea>
Listas desplegables
Las listas desplegables se crean con los elementos <select>
y <option>
:
<label for="pais">Selecciona tu país:</label>
<select id="pais" name="pais">
<option value="">--Selecciona una opción--</option>
<option value="es">España</option>
<option value="mx">México</option>
<option value="ar">Argentina</option>
<option value="co">Colombia</option>
</select>
Botones
Los botones permiten a los usuarios enviar el formulario o realizar otras acciones:
<!-- Botón de envío del formulario -->
<button type="submit">Enviar datos</button>
<!-- Botón para restablecer el formulario -->
<button type="reset">Limpiar formulario</button>
<!-- Botón genérico (para usar con JavaScript) -->
<button type="button">Hacer algo</button>
Agrupación y estructura
Para mejorar la organización de formularios complejos, HTML ofrece elementos de agrupación:
Fieldset y Legend
El elemento <fieldset>
agrupa controles relacionados, mientras que <legend>
proporciona un título descriptivo para ese grupo:
<form>
<fieldset>
<legend>Información personal</legend>
<label for="nombre">Nombre:</label>
<input type="text" id="nombre" name="nombre">
<label for="apellido">Apellido:</label>
<input type="text" id="apellido" name="apellido">
</fieldset>
<fieldset>
<legend>Información de contacto</legend>
<label for="email">Email:</label>
<input type="email" id="email" name="email">
<label for="telefono">Teléfono:</label>
<input type="tel" id="telefono" name="telefono">
</fieldset>
</form>
Validación de formularios
HTML5 introdujo validación nativa de formularios, permitiendo verificar los datos antes de enviarlos al servidor:
<form>
<!-- Campo obligatorio -->
<input type="text" name="nombre" required>
<!-- Validación de email -->
<input type="email" name="correo">
<!-- Rango numérico (1-100) -->
<input type="number" name="edad" min="1" max="100">
<!-- Patrón personalizado (expresión regular) -->
<input type="text" name="codigo" pattern="[A-Z]{3}[0-9]{3}"
title="Tres letras mayúsculas seguidas de tres números">
</form>
Tipos de input modernos
HTML5 introdujo nuevos tipos de input
que mejoran la experiencia del usuario en diferentes dispositivos:
<!-- Selector de fecha -->
<input type="date" name="fecha_nacimiento">
<!-- Selector de color -->
<input type="color" name="color_favorito">
<!-- Campo de búsqueda -->
<input type="search" name="busqueda">
<!-- Selector de rango (slider) -->
<input type="range" name="volumen" min="0" max="100" step="1">
<!-- Campo para números de teléfono -->
<input type="tel" name="telefono">
<!-- Campo para URLs -->
<input type="url" name="sitio_web">
Ejemplo completo de un formulario
A continuación, un ejemplo de un formulario de contacto que integra varios de los elementos vistos:
<form action="/enviar-contacto" method="post">
<h2>Formulario de contacto</h2>
<div class="form-group">
<label for="nombre">Nombre completo:</label>
<input type="text" id="nombre" name="nombre" required>
</div>
<div class="form-group">
<label for="email">Correo electrónico:</label>
<input type="email" id="email" name="email" required>
</div>
<div class="form-group">
<label for="asunto">Asunto:</label>
<select id="asunto" name="asunto">
<option value="consulta">Consulta general</option>
<option value="soporte">Soporte técnico</option>
<option value="ventas">Información de ventas</option>
</select>
</div>
<div class="form-group">
<label for="mensaje">Mensaje:</label>
<textarea id="mensaje" name="mensaje" rows="5" required></textarea>
</div>
<div class="form-group">
<input type="checkbox" id="terminos" name="terminos" required>
<label for="terminos">Acepto la política de privacidad</label>
</div>
<div class="form-buttons">
<button type="reset">Limpiar</button>
<button type="submit">Enviar mensaje</button>
</div>
</form>
Consideraciones de accesibilidad
Para crear formularios accesibles para todos los usuarios:
- Usa siempre elementos
<label>
asociados a cada control - Proporciona instrucciones claras sobre cómo completar el formulario
- Agrupa campos relacionados con
<fieldset>
y<legend>
- Incluye atributos
aria-*
cuando sea necesario para mejorar la accesibilidad - Asegúrate de que el formulario sea navegable mediante teclado
<div class="form-group">
<label for="nombre">Nombre:</label>
<input type="text" id="nombre" name="nombre"
aria-required="true" aria-describedby="nombre-help">
<small id="nombre-help">Introduce tu nombre completo</small>
</div>
Los formularios HTML son la base de la interactividad en la web, permitiendo a los usuarios enviar información, realizar búsquedas, iniciar sesión y mucho más. Dominar su implementación es fundamental para cualquier desarrollador web.
Lecciones de este módulo de HTML
Lecciones de programación del módulo Formularios HTML del curso de HTML.