Hoy · Hoja de ruta
- 1. Aprende: Cómo se leen los valores de un formulario y qué tipo tienen.
- 2. Haz: Lee tu formulario de contacto y conviértelo en un objeto de datos.
- 3. Comprueba: Cada valor llega con el tipo correcto antes de usarse.
Antes de empezar · 5 minutos, sin apuntes
- ¿Qué campos tiene tu formulario de la UD1?
- Un campo numérico, ¿devuelve número?
- ¿Cómo sabrías si una casilla está marcada?
Leer un campo
const buscador = document.querySelector("[data-js='buscador']");
buscador.value // siempre texto
buscador.value.trim()
Number(precioMaximo.value) // convertir en el borde, como en la UD3
casilla.checked // true / false
seleccion.value // el valor de la opción elegida
Todo campo devuelve texto
Incluso los numéricos y los de fecha. Es exactamente el "10" + 5 de la sesión 3 de la UD3, que ahora deja de ser un ejercicio y pasa a ser tu bug.
Convierte al leer, y comprueba: un campo numérico vacío da cadena vacía, y Number("") es 0, no NaN. Ese cero silencioso ha estropeado muchos filtros.
Leer el formulario entero
formulario.addEventListener("submit", (evento) => {
evento.preventDefault();
const datos = Object.fromEntries(new FormData(evento.currentTarget));
console.log(datos);
// { nombre: "Ana", email: "ana@…", mensaje: "Hola" }
});
FormData recoge los campos que tengan atributo name —de ahí la insistencia de la UD1 en ponerlo— y Object.fromEntries los convierte en un objeto normal, listo para validarlo con las funciones que escribiste en la UD3.
Las casillas no marcadas no aparecen, y los grupos de casillas con el mismo nombre requieren getAll.
Reaccionar mientras se escribe
buscador.addEventListener("input", (evento) => {
const termino = evento.target.value.trim();
pintarCatalogo(buscar(catalogo, termino), contenedor);
});
Ya tienes la búsqueda en vivo: buscar es la función de la sesión 15 de la UD3, sin un solo cambio.
Otras cosas útiles
formulario.reset(); // vuelve a los valores iniciales
buscador.focus(); // pone el foco
buscador.select(); // selecciona el contenido
campo.disabled = true; // deshabilita mientras se envía
Tarea 8 · Leer y usar
- Búsqueda en vivo con
inputsobre tu catálogo pintado. - Un filtro de precio máximo con conversión y comprobación del campo vacío.
- Lee el formulario de contacto entero con
FormDataal enviarlo. - Muestra en consola el objeto resultante y comprueba el tipo de cada valor.
- Añade un botón de limpiar que vacíe los filtros y devuelva el foco al buscador.
Checkpoint · fin de la sesión 8
- Conviertes cada valor al leerlo.
- Usas
FormDatay sabes que depende del atributoname. - Tratas el campo vacío antes de que se convierta en un cero.
- Reutilizas las funciones de la UD3 sin modificarlas.
Antes de cerrar · 2 minutos, sin mirar
- ¿De qué tipo es el valor de un campo numérico?
- ¿Qué campos recoge
FormData? - ¿Cuánto vale
Number("")?
Ver respuestas
1 · Texto, siempre.
2 · Los que tienen atributo name; las casillas sin marcar no aparecen.
3 · Cero, que es justo lo que hay que detectar antes de usarlo como límite.