edubun
Italiano

Basi dei moduli

Fai clic sulla parola Email accanto a un campo di un modulo ben costruito e il cursore salta nella casella. Quel piccolo dettaglio è l'elemento label che fa il suo lavoro.

Che cosa fa un modulo

Caselle di ricerca, pagine di iscrizione e schermate di pagamento sono tutti moduli. Un elemento <form> raggruppa i controlli, e quando il visitatore lo invia, il browser manda il name di ogni controllo insieme al suo valore all'indirizzo indicato nell'attributo action del modulo. L'attributo method dice come: get mette i dati nell'indirizzo, adatto alle ricerche che potresti salvare nei segnalibri, mentre post li invia nel corpo della richiesta, adatto a tutto ciò che modifica dati, come un ordine. L'HTML costruisce il modulo; un programma sul server decide che cosa fare con ciò che arriva.

<form action="/subscribe" method="post">
  <label for="name">Name</label>
  <input id="name" name="name" type="text" autocomplete="name">

  <label for="email">Email</label>
  <input id="email" name="email" type="email" required autocomplete="email">

  <button type="submit">Subscribe</button>
</form>
Ogni label è collegata al suo input grazie a valori for e id uguali.

Ogni controllo ha bisogno di una label

L'elemento <label> dà un nome a un controllo. Collega i due dando all'input un id e alla label un attributo for corrispondente, oppure mettendo l'input dentro la label. Il collegamento fa due cose. Gli screen reader leggono la label quando il campo riceve il focus, così l'utente sente Email, testo modificabile invece di un semplice testo modificabile. E il clic sulla label mette il focus sul campo o spunta la casella, il che offre a tutti, specialmente a chi usa un telefono, un bersaglio più grande. Un placeholder (testo grigio di suggerimento dentro la casella) non è una label: sparisce appena scrivi, spesso ha poco contrasto e alcune tecnologie assistive lo ignorano.

Tipi di input

L'attributo type di <input> cambia il controllo. text è la casella predefinita su una riga. email, tel e url sembrano simili ma sui telefoni mostrano una tastiera adatta, e il browser controlla che un indirizzo email abbia la forma giusta. number accetta cifre e può avere min e max. password nasconde ciò che scrivi, date offre un calendario, e checkbox e radio sono caselle da spuntare. Per un testo più lungo usa <textarea>, e per una scelta da un elenco <select> con elementi <option> al suo interno.

Raggruppare le scelte

I pulsanti di opzione (radio) che appartengono alla stessa domanda hanno lo stesso name, e se ne può scegliere solo uno alla volta. Racchiudi il gruppo in <fieldset> e metti la domanda in <legend>. Uno screen reader legge allora la domanda insieme a ogni opzione: Loaf size, Small, pulsante di opzione, 1 di 2. Ogni pulsante di opzione ha comunque la sua label.

Pulsanti e controlli integrati

Un <button> dentro un modulo lo invia per impostazione predefinita; scrivere type="submit" lo rende esplicito, e type="button" crea un pulsante che non fa nulla finché JavaScript non gli dà un compito. Prima dell'invio, il browser può controllare i campi per te. required blocca il modulo se il campo è vuoto, type="email" rifiuta un testo senza @, e minlength, min e max fissano dei limiti. Questi controlli aiutano il visitatore a correggere presto gli errori, ma vengono eseguiti nel suo browser e si possono aggirare, quindi il server deve controllare di nuovo i dati. L'attributo autocomplete, con valori come email o name, permette al browser di inserire i dati salvati, il che fa risparmiare digitazione a tutti e aiuta soprattutto le persone con difficoltà motorie o di memoria.

Nell'editor qui sotto il modulo è mostrato in un ambiente isolato, quindi premere Subscribe non invia nulla da nessuna parte. Il pulsante Verifica guarda solo il tuo HTML.
formRaggruppa i controlli e invia i loro nomi e valori
labelDà un nome a un controllo; for corrisponde all'id dell'input
nameChiave inviata al server insieme al valore
requiredIl campo va compilato prima dell'invio
fieldset / legendRaggruppa controlli correlati sotto una domanda
placeholderTesto di suggerimento dentro una casella; non è una label
method="post"Invia i dati nel corpo della richiesta; per modifiche come gli ordini
  1. Una label ha for="phone". A quale input appartiene?
    • All'input con id="phone"
    • All'input con name="phone"
    • All'input successivo, qualunque sia il suo id
  2. Perché un placeholder non basta come label?
    • Sparisce quando scrivi e spesso ha poco contrasto
    • Non è HTML valido
    • Non invia nulla
  3. Quale tipo di input mostra sui telefoni una tastiera per email e controlla la @?
  4. Due pulsanti di opzione devono escludersi a vicenda. Che cosa devono avere in comune?
    • name
    • id
    • value
  5. Quale elemento contiene la domanda di un fieldset?
    • legend
    • caption
    • label
  6. Quale metodo è adatto a un modulo di ricerca che potresti salvare nei segnalibri?
    • get
    • post
  7. Il browser controlla i campi obbligatori. Il server deve comunque controllare?
    • Sì, i controlli del browser si possono aggirare
    • No, basta il browser
    • Solo per le password
  8. Quale elemento è adatto a un messaggio su più righe?
    • textarea
    • input type="text"
    • select
  9. Che cosa fa il clic su una label collegata correttamente?
    • Mette il focus sul suo campo o spunta la sua casella
    • Invia il modulo
    • Svuota il campo
  10. Quale attributo permette al browser di inserire un indirizzo email salvato?
    • autocomplete="email"
    • placeholder="email"
    • value="email"
Punti chiave
  • form invia il name e il valore di ogni controllo ad action, con get o post.
  • Ogni controllo ha una label (for corrisponde a id); placeholder non è una label.
  • Scegli il type giusto; raggruppa i radio con fieldset e legend; il server controlla di nuovo.
Fonti di questo corso (10)
  • WHATWG, HTML Living Standard (html.spec.whatwg.org, checked 2026-10-17)
  • MDN Web Docs, Learn web development: Structuring content with HTML, and the HTML element reference (developer.mozilla.org/en-US/docs/Learn_web_development/Core/Structuring_content and developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements, checked 2026-10-17)
  • MDN, HTML images (alt text guidance, checked 2026-10-17)
  • W3C WAI, Images tutorial and alt decision tree (w3.org/WAI/tutorials/images/decision-tree, checked 2026-10-17)
  • CERN, A short history of the Web (home.cern/science/computing/the-birth-of-the-web/short-history-web/, checked 2026-10-17)
  • W3C and WHATWG memorandum of understanding, 28 May 2019 (w3.org/2019/04/WHATWG-W3C-MOU.html, checked 2026-10-17)
  • W3C, Using ARIA, first rule of ARIA use (w3.org/TR/using-aria/, checked 2026-10-17)
  • W3C Markup Validation Service (validator.w3.org, checked 2026-10-17)
  • MDN, Viewport meta element (checked 2026-10-17)
  • Every code exercise was checked with a Playwright probe against a reference solution.

Consultato il: 2026-10-17