Ejercicio: Formularios
Objetivo
Construir un formulario de contacto accesible y con validación, usando los distintos tipos de campo de la lección.
Pasos
Marca cada paso a medida que lo completes. Tu avance se guarda en este navegador.
💡 Pista 1: al hacer clic en el texto no pasa nada
Revisa que el for del <label> sea idéntico al id del <input>, mayúsculas incluidas.
💡 Pista 2: los radios me dejan marcar los dos
Los dos <input type="radio"> deben tener el mismo name, por ejemplo name="respuesta", y cada uno un value distinto.
🔎 Comprueba tu trabajo
Pega tu código y pulsa Comprobar. La revisión ocurre en tu navegador; nada se envía a ningún sitio. Cada punto en rojo incluye una pista.
✅ Ver una solución de ejemplo
Intenta resolverlo antes de mirar. Tu versión puede ser distinta y también correcta.
<h1>Contacto</h1>
<form action="/enviar" method="post">
<p>
<label for="nombre">Nombre</label><br>
<input type="text" id="nombre" name="nombre" required>
</p>
<p>
<label for="correo">Correo</label><br>
<input type="email" id="correo" name="correo" required>
</p>
<p>
<label for="fecha">Fecha preferida</label><br>
<input type="date" id="fecha" name="fecha">
</p>
<p>
<label for="tel">Teléfono</label><br>
<input type="tel" id="tel" name="telefono">
</p>
<p>
<label for="motivo">Motivo</label><br>
<select id="motivo" name="motivo">
<option>Duda</option>
<option>Sugerencia</option>
<option>Otro</option>
</select>
</p>
<fieldset>
<legend>¿Cómo prefieres que te respondamos?</legend>
<input type="radio" id="r-correo" name="respuesta" value="correo" checked>
<label for="r-correo">Por correo</label>
<input type="radio" id="r-tel" name="respuesta" value="telefono">
<label for="r-tel">Por teléfono</label>
</fieldset>
<p>
<label for="mensaje">Mensaje</label><br>
<textarea id="mensaje" name="mensaje" rows="4" minlength="10" required></textarea>
</p>
<p>
<input type="checkbox" id="acepto" name="acepto" required>
<label for="acepto">Acepto el aviso de privacidad</label>
</p>
<button type="submit">Enviar mensaje</button>
<button type="reset">Limpiar</button>
</form>
💡 🏁 Reto extra (opcional)
Agrega un <datalist> para sugerir opciones en un campo de texto (busca cómo funciona en MDN) y un campo type="range" para valorar tu satisfacción del 1 al 10.