Capítulo 9: Formularios y sus Eventos
Los formularios son una de las formas principales de interacción entre usuario y aplicación. Este capítulo cubre cómo JavaScript manipula y responde a eventos de formularios.
9.1. Acceso a formularios y elementos
Acceso por document.forms
document.formsTodos los formularios de una página se acceden a través de document.forms.
// document.forms es una HTMLCollection
console.log(document.forms); // HTMLCollection [form, form]
console.log(document.forms[0]); // Primer formulario
console.log(document.forms['login']); // Formulario con name="login"
// Acceso a elementos dentro del formulario
const formulario = document.forms['login'];
console.log(formulario.email); // Input con name="email"
console.log(formulario.password); // Input con name="password"Acceso directo por querySelector
La forma más recomendada es usar selectores CSS:
<form id="mi-formulario">
<input type="text" name="email" id="email">
<input type="password" name="password">
<button type="submit">Login</button>
</form>9.2. Eventos principales de formularios
submit
submitSe dispara cuando el usuario envía el formulario (presiona el botón submit o Enter en un input).
¡Importante!: Por defecto, el formulario se envía al servidor. Generalmente queremos prevenir este comportamiento con preventDefault().
input
inputSe dispara cada vez que el usuario cambia el contenido de un campo (más o menos tecla).
change
changeSe dispara cuando el usuario termina de editar un campo (pierde el foco).
focus y blur
focus y blurfocus: El input recibe el foco (el usuario empieza a escribir en él)blur: El input pierde el foco (el usuario se va a otro campo)
9.3. preventDefault() en formularios
preventDefault() en formulariosCuando registres un listener en el evento submit, casi siempre necesitarás cancelar el envío por defecto.
Sin preventDefault(), el navegador recargaría la página y enviaría el formulario al servidor (comportamiento clásico de HTML).
9.4. Lectura de valores
Cada tipo de input tiene formas diferentes de leer su valor.
input[type="text"], textarea
input[type="text"], textareainput[type="checkbox"]
input[type="checkbox"]input[type="radio"]
input[type="radio"]select
select9.5. Objeto FormData: Procesamiento moderno
FormData: Procesamiento modernoFormData es una interfaz moderna para recopilar datos de formularios de forma segura.
9.6. Patrón práctico: Validación en tiempo real
Resumen del Capítulo
Los formularios son la interfaz principal para recopilar datos del usuario. JavaScript permite validar, transformar y procesar esos datos en tiempo real. Recuerda usar preventDefault() en el evento submit para evitar recargas de página innecesarias, y utiliza FormData para un manejo moderno y seguro de datos.
💡 Conceptos Clave:
submit: Evento al enviar el formulario
input: Se dispara al cambiar contenido (cada tecla)
change: Se dispara al terminar de editar
focus/blur: Recibir y perder el foco
preventDefault(): Evitar el envío por defecto
Lectura de valores: .value, .checked según el tipo
FormData: Interfaz moderna para datos de formularios
Validación en tiempo real: Feedback inmediato al usuario
🤔 Preguntas de Reflexión:
¿Cuál es la diferencia entre los eventos
inputychange?¿Cuándo necesitarías usar
preventDefault()en un formulario?¿Cómo leerías el valor de un
<select>con múltiples selecciones?¿Cuál es la ventaja de usar
FormDataen lugar de leer cada valor manualmente?¿Cómo validarías un email en tiempo real mientras el usuario escribe?
Crea un formulario con validación que solo permita enviar si los campos son válidos.
Última actualización
¿Te fue útil?