0Pricing
HTML Academy · Lección

Eventos de restablecimiento de formularios y gestión del estado

Gestione el restablecimiento del formulario y siga el estado de los campos durante las interacciones del usuario

Eventos de restablecimiento de formularios y gestión del estado es una lección gratuita de HTML Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de HTML Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de HTML Academy incluye 4 lecciones en total.

El evento reset

Al llamar a form.reset() o hacer clic en <button type="reset">, se dispara un evento reset en el formulario. Cada campo vuelve a su valor inicial (el atributo value o un valor vacío en los campos nuevos). Escuche el evento para reaccionar al restablecimiento mediante código.

Valores predeterminados

El estado inicial que utiliza reset es la propiedad defaultValue, defaultChecked o defaultSelected, no el valor actual. Estas propiedades reflejan los atributos value/checked/selected del HTML, establecidos al analizar el documento y sin cambios por la interacción del usuario.

Actualizar valores predeterminados mediante código

Para convertir el valor actual en el nuevo valor «predeterminado» (de modo que los restablecimientos posteriores vuelvan a él), establezca input.defaultValue = input.value. Es útil después de guardar correctamente: los restablecimientos futuros volverán al estado guardado en lugar del formulario vacío original.

form.addEventListener("submit", () => {
  // After save, treat current as defaults
  Array.from(form.elements).forEach((el) => {
    if ("defaultValue" in el) el.defaultValue = el.value;
  });
});

Escuchar reset

El evento reset se dispara antes de que se reviertan los valores. Para inspeccionar el estado posterior al restablecimiento, posponga la operación hasta la siguiente microtarea: form.addEventListener("reset", () => queueMicrotask(() => { ... use new values ... })). Este detalle del momento en que se dispara el evento suele resultar confuso.

Impedir el restablecimiento

Si llama a e.preventDefault() en un controlador de eventos reset, el restablecimiento se cancela y los valores permanecen como estaban. Es útil para mostrar confirmaciones de «¿Está seguro?» en formularios con datos importantes introducidos por el usuario.

Seguimiento del estado modificado

Compare los valores actuales con los predeterminados para saber si el formulario se ha modificado: const dirty = Array.from(form.elements).some(el => el.value !== el.defaultValue). Úselo para activar o desactivar un botón de guardado o para mostrar una confirmación sobre cambios sin guardar.

Confirmación beforeunload

Para advertir al usuario antes de que abandone una página con un formulario modificado: window.addEventListener("beforeunload", (e) => { if (isDirty(form)) { e.preventDefault(); } }). Los navegadores muestran su propio aviso genérico de «¿Salir del sitio?»; los mensajes personalizados ya no son compatibles con los navegadores modernos.

Los botones de restablecimiento suelen ofrecer una mala experiencia

Los botones de restablecimiento reinician todos los campos con un solo clic accidental, a menudo con consecuencias graves. La mayoría de las interfaces modernas los omiten por completo o los ocultan detrás de una confirmación. Si necesita un restablecimiento, colóquelo lejos del botón de envío y considere ofrecer una opción de deshacer en un solo paso.

Persistencia del estado del formulario

En formularios largos, guarde el estado en localStorage cuando se produzcan eventos input y restáurelo al cargar la página. Combine esta función con un aviso de «¿Restaurar borrador?» para que los usuarios no pierdan su trabajo al cerrar accidentalmente una pestaña. Combine también los controladores de reset/submit para borrar el estado guardado cuando ya no sea necesario.

form.addEventListener("input", () => {
  localStorage.setItem("form-draft", JSON.stringify(new FormData(form)));
});

Componentes personalizados y reset

Los elementos de formulario personalizados (creados como componentes web) participan en el restablecimiento del formulario mediante ElementInternals: en su método formResetCallback, restaure el valor predeterminado. Esto es necesario cuando el elemento personalizado contiene un campo input interno que requiere un restablecimiento explícito.

Elementos personalizados asociados a formularios

Al declarar static formAssociated = true en una clase de elemento personalizado y utilizar this.attachInternals(), se exponen formResetCallback, formStateRestoreCallback, formDisabledCallback y formAssociatedCallback para integrarlos con el ciclo de vida del formulario.

Comprobación de conocimientos

¿A qué valor vuelve cada campo cuando se llama a form.reset()?

Resumen

El evento reset se dispara cuando se ejecuta form.reset(); los campos vuelven a defaultValue/defaultChecked/defaultSelected. Actualice los valores predeterminados después de guardar para convertirlos en el nuevo estado de restablecimiento. Realice el seguimiento del estado modificado comparando los valores actuales con los predeterminados, persista los datos en localStorage para los formularios largos y use beforeunload para advertir antes de navegar. Los elementos personalizados se integran mediante formAssociated y formResetCallback.

Preguntas frecuentes

¿La lección «Eventos de restablecimiento de formularios y gestión del estado» es gratis?

Sí — el texto completo de «Eventos de restablecimiento de formularios y gestión del estado» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de HTML Academy, actualiza a CoddyKit PRO. El curso de HTML Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Eventos de restablecimiento de formularios y gestión del estado»?

Gestione el restablecimiento del formulario y siga el estado de los campos durante las interacciones del usuario Practicas HTML Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar HTML Academy?

No se requiere experiencia previa. HTML Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «Eventos de restablecimiento de formularios y gestión del estado»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de HTML Academy?

Sí. Cada lección de HTML Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. La API FormData
  2. La Constraint Validation API
  3. reportValidity y setCustomValidity
  4. Eventos de restablecimiento de formularios y gestión del estado
← Volver a HTML Academy