Eventi di reset dei moduli e gestione dello stato
Gestire il reset dei moduli e monitorare lo stato dei campi durante le interazioni dell’utente
Eventi di reset dei moduli e gestione dello stato è una lezione HTML Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento HTML Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso HTML Academy include 4 lezioni in totale.
L'evento reset
La chiamata a form.reset() o il clic su <button type="reset"> emette un evento reset sul modulo. Ogni campo torna al suo valore iniziale (l'attributo value, oppure vuoto per gli input appena creati). Ascolti l'evento per reagire programmaticamente al reset.
Valori predefiniti
Lo stato iniziale usato dal reset è la proprietà defaultValue, defaultChecked o defaultSelected, non il valore corrente. Queste proprietà riflettono gli attributi value/checked/selected nell'HTML, impostati al momento del parsing e non modificati dall'interazione dell'utente.
Aggiornare programmaticamente i valori predefiniti
Per rendere un valore corrente il nuovo valore "predefinito" (in modo che i reset successivi ripristinino quello), imposti input.defaultValue = input.value. È utile dopo un salvataggio riuscito: i reset futuri ripristineranno lo stato salvato invece del modulo inizialmente vuoto.
form.addEventListener("submit", () => {
// After save, treat current as defaults
Array.from(form.elements).forEach((el) => {
if ("defaultValue" in el) el.defaultValue = el.value;
});
});Ascoltare reset
L'evento reset viene emesso prima del ripristino dei valori. Per esaminare lo stato successivo al reset, rimandi l'operazione al microtask seguente: form.addEventListener("reset", () => queueMicrotask(() => { ... use new values ... })). Questo dettaglio relativo alla temporizzazione dell'evento crea spesso confusione.
Impedire il reset
Se chiama e.preventDefault() in un gestore dell'evento reset, il reset viene annullato e i valori rimangono invariati. È utile per chiedere una conferma del tipo "È sicuro?" nei moduli che contengono dati importanti inseriti dall'utente.
Tracciare lo stato di modifica
Confronti i valori correnti con quelli predefiniti per sapere se il modulo è stato modificato: const dirty = Array.from(form.elements).some(el => el.value !== el.defaultValue). Lo usi per abilitare o disabilitare un pulsante di salvataggio oppure per mostrare una conferma in caso di modifiche non salvate.
Conferma beforeunload
Per avvisare l'utente prima che lasci una pagina con un modulo modificato: window.addEventListener("beforeunload", (e) => { if (isDirty(form)) { e.preventDefault(); } }). I browser mostrano la propria richiesta generica "Vuole lasciare il sito?"; nei browser moderni i messaggi personalizzati non sono più supportati.
I pulsanti di reset sono solitamente una cattiva UX
I pulsanti di reset ripristinano ogni campo con un solo clic accidentale, spesso con conseguenze gravi. La maggior parte delle interfacce moderne li omette completamente oppure li nasconde dietro una conferma. Se le serve un reset, lo posizioni lontano dal pulsante di invio e valuti la possibilità di offrire un annullamento in un solo passaggio.
Persistenza dello stato del modulo
Per i moduli lunghi, salvi lo stato in localStorage in risposta agli eventi input e lo ripristini al caricamento. Abbini questa funzionalità a una richiesta "Ripristinare la bozza?", così gli utenti non perderanno il lavoro in caso di chiusura accidentale della scheda. Combini questa logica con i gestori di reset e invio per cancellare lo stato salvato quando non è più necessario.
form.addEventListener("input", () => {
localStorage.setItem("form-draft", JSON.stringify(new FormData(form)));
});Componenti personalizzati e reset
Gli elementi personalizzati dei moduli (realizzati come web component) partecipano al reset del modulo tramite ElementInternals: nel metodo formResetCallback, ripristini il valore predefinito. È necessario quando l'elemento personalizzato include un input interno che richiede un reset esplicito.
Elementi personalizzati associati ai moduli
Dichiarando static formAssociated = true nella classe di un elemento personalizzato e usando this.attachInternals(), espone formResetCallback, formStateRestoreCallback, formDisabledCallback e formAssociatedCallback per integrarli nel ciclo di vita del modulo.
Verifica delle conoscenze
A quale valore torna ogni campo quando viene chiamato form.reset()?
Riepilogo
L'evento reset viene emesso quando viene eseguito form.reset(); i campi tornano a defaultValue/defaultChecked/defaultSelected. Aggiorni i valori predefiniti dopo un salvataggio per renderli il nuovo stato del reset. Tracci lo stato di modifica confrontando i valori correnti con quelli predefiniti, salvi lo stato in localStorage per i moduli lunghi e usi beforeunload per gli avvisi durante la navigazione. Gli elementi personalizzati si integrano tramite formAssociated e formResetCallback.
Domande Frequenti
La lezione «Eventi di reset dei moduli e gestione dello stato» è gratuita?
Sì — il testo completo di «Eventi di reset dei moduli e gestione dello stato» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso HTML Academy, passa a CoddyKit PRO. Il corso HTML Academy include 4 lezioni in totale.
Cosa imparerò in «Eventi di reset dei moduli e gestione dello stato»?
Gestire il reset dei moduli e monitorare lo stato dei campi durante le interazioni dell’utente Eserciti HTML Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare HTML Academy?
Non è richiesta alcuna esperienza precedente. HTML Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.
Quanto tempo richiede la lezione «Eventi di reset dei moduli e gestione dello stato»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione HTML Academy?
Sì. Ogni lezione HTML Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- La FormData API
- La Constraint Validation API
- reportValidity e setCustomValidity
- Eventi di reset dei moduli e gestione dello stato