cat javascript/gestire-l-invio-di-un-form.md

Lezione 3112 min

Gestire l'invio di un form

Usare submit e preventDefault per controllare un modulo.

In parole semplici

Un form prova a inviare la pagina. Durante gli esercizi vogliamo fermare questo comportamento e gestire i dati con JavaScript.

Questa lezione fa parte del modulo Rendere interattiva una pagina. L’obiettivo del modulo è: Collegare JavaScript a HTML in modo graduale: selezionare elementi, reagire a eventi, leggere form e salvare dati.

Parole nuove

  • submit: evento di invio del form.
  • preventDefault: istruzione che blocca il comportamento automatico.

Cosa impari

  • Capire il concetto senza partire da definizioni astratte.
  • Vedere un esempio piccolo che puoi copiare e modificare.
  • Collegare l’argomento al risultato del modulo: una todo list semplice che salva le attività nel browser.

Esempio da copiare

<form id="form">
  <input name="titolo" placeholder="Nuova attività">
  <button>Aggiungi</button>
</form>

<script>
  const form = document.querySelector("#form");

  form.addEventListener("submit", (event) => {
    event.preventDefault();
    const dati = new FormData(form);
    console.log(dati.get("titolo"));
  });
</script>

Non devi memorizzare tutto subito. Prima copia l’esempio, fallo funzionare e cambia una cosa alla volta.

Esercizi

Base · facile

Ascolta il submit di un form, blocca il ricaricamento con preventDefault e stampa il valore del campo.

Soluzione
const form = document.querySelector("#form");
form.addEventListener("submit", (event) => {
  event.preventDefault();
  const dati = new FormData(form);
  console.log(dati.get("titolo"));
});

Senza event.preventDefault() la pagina si ricaricherebbe e perderesti il controllo dei dati.

Intermedio · medio

Dopo aver letto il valore, se non è vuoto mostralo in un paragrafo e svuota il campo (form.reset()). Verifica che inviare con il tasto Invio funzioni come cliccare il bottone.

Sfida · difficile

Spiega perché ascoltare submit sul form è preferibile ad ascoltare click sul bottone (gestisce anche l’Invio da tastiera, è più accessibile). Aggiungi una validazione minima che blocca l’invio se il campo è vuoto e comunica l’errore all’utente.

Controllo finale

Hai finito quando il valore appare in console e la pagina non si ricarica.