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 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.
| form | Raggruppa i controlli e invia i loro nomi e valori |
| label | Dà un nome a un controllo; for corrisponde all'id dell'input |
| name | Chiave inviata al server insieme al valore |
| required | Il campo va compilato prima dell'invio |
| fieldset / legend | Raggruppa controlli correlati sotto una domanda |
| placeholder | Testo di suggerimento dentro una casella; non è una label |
| method="post" | Invia i dati nel corpo della richiesta; per modifiche come gli ordini |
- 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
- Perché un placeholder non basta come label?
- Sparisce quando scrivi e spesso ha poco contrasto
- Non è HTML valido
- Non invia nulla
- Quale tipo di input mostra sui telefoni una tastiera per email e controlla la @?
- Due pulsanti di opzione devono escludersi a vicenda. Che cosa devono avere in comune?
- name
- id
- value
- Quale elemento contiene la domanda di un fieldset?
- legend
- caption
- label
- Quale metodo è adatto a un modulo di ricerca che potresti salvare nei segnalibri?
- get
- post
- 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
- Quale elemento è adatto a un messaggio su più righe?
- textarea
- input type="text"
- select
- 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
- Quale attributo permette al browser di inserire un indirizzo email salvato?
- autocomplete="email"
- placeholder="email"
- value="email"
- 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