Aiuta gli utenti a inserire i dati nei moduli

Per rendere interattivo un modulo, devi aggiungere elementi del modulo. Sono presenti controlli per inserire e selezionare dati, elementi che descrivono i controlli, elementi che raggruppano i campi e pulsanti per inviare un modulo.

Cosa sono gli elementi del modulo?

Vedrai due elementi <input>, <input type="text"> e <input type="file">. Perché hanno un aspetto diverso?

In base al nome dell'elemento e all'attributo type, i browser mostrano interfacce utente diverse, utilizzano regole di convalida diverse e forniscono molte altre funzionalità. L'utilizzo del controllo modulo appropriato ti aiuta a creare moduli migliori.

Etichette per gli elementi del modulo

Supponiamo che tu voglia aggiungere un input in cui l'utente possa inserire il suo colore preferito. A questo scopo, devi aggiungere un elemento <input> al modulo. Ma come fa l'utente a sapere che deve inserire il suo colore preferito?

Per descrivere i controlli modulo, utilizza un <label> per ogni controllo modulo.

<label for="color">What is your favorite color?</label>
<input type="text" id="color" name="color">

L'attributo for nell'elemento etichetta corrisponde all'attributo id nell'input.

Acquisire l'input dell'utente

Come suggerisce il nome, l'elemento <input> viene utilizzato per raccogliere l'input degli utenti.

<label for="color">What is your favorite color</label>
<input type="text" id="color" name="color">

Come accennato in precedenza, l'attributo id collega <input> a <label>. Che dire dell'attributo nome e tipo in questo esempio?

L'attributo nome

Utilizza l'attributo name per identificare i dati inseriti dall'utente con il controllo. Se invii il modulo, questo nome viene incluso nella richiesta. Supponiamo che tu abbia chiamato un controllo del modulo mountain e che l'utente abbia inserito Gutenberg, la richiesta includerà queste informazioni come mountain=Gutenberg.

Prova a modificare il nome del controllo modulo in hill. Se esegui questa operazione correttamente e invii il modulo, hill è visibile nell'URL.

Il tipo di input

Esistono diversi tipi di controlli dei moduli, tutti con utili funzionalità integrate che funzionano su browser e piattaforme diversi. In base all'attributo type, il browser esegue il rendering di interfacce utente diverse, mostra tastiere sullo schermo diverse, utilizza regole di convalida diverse e altro ancora. Scopri come modificare il tipo.

Utilizzando type="checkbox", il browser ora esegue il rendering di una casella di controllo anziché di un campo di testo. La casella di controllo è dotata anche di attributi aggiuntivi. Puoi impostare l'attributo checked in modo che venga visualizzato come selezionato.

Puoi scegliere tra vari altri tipi. Esamineremo questo aspetto in dettaglio in un modulo successivo.

Consenti più righe di testo

Supponiamo che ti serva un campo in cui un utente possa scrivere un commento. Per questo, non sarebbe fantastico se potessero inserire più righe di testo? Questo è lo scopo dell'elemento <textarea>.

<label for="comment">Comment</label>
<textarea id="comment" name="comment"></textarea>

Scegliere da un elenco di opzioni

Come si fornisce agli utenti un elenco di opzioni tra cui scegliere? Per farlo, puoi utilizzare un elemento <select>.

<label for="color">Color</label>
<select id="color" name="color">
  <option value="orange">Orange</option>
  <option value="pink">Pink</option>
</select>

Innanzitutto, aggiungi un elemento <select>. Come per tutti gli altri controlli del modulo, lo colleghi a un <label> con l'attributo id e gli assegni un nome univoco utilizzando l'attributo name.

Tra il tag di inizio e di fine dell'elemento <select>, puoi aggiungere più elementi <option>, ognuno dei quali rappresenta una selezione.

Ogni opzione ha un attributo value univoco, quindi puoi distinguerle durante l'elaborazione dei dati del modulo. Il testo all'interno dell'elemento option è il valore leggibile.

Se invii il modulo utilizzando questo <select> senza modificare la selezione, la richiesta includerà color=orange. Ma come fa il browser a sapere quale opzione deve essere utilizzata?

Il browser utilizza la prima opzione dell'elenco, a meno che:

  • Un elemento <option> ha l'attributo selected.
  • L'utente sceglie un'altra opzione.

Preselezionare un'opzione

Con l'attributo selected puoi preselezionare un'opzione. Questo diventa il valore predefinito, indipendentemente dall'ordine in cui vengono definiti gli elementi <option>.

Controlli modulo di gruppo

A volte è necessario raggruppare i controlli del modulo. A questo scopo, puoi utilizzare l'elemento <fieldset>.

<fieldset>
    <legend>What is your favorite web technology</legend>

    <label for="html">HTML</label>
    <input type="radio" name="webfeature" value="html" id="html">

    <label for="css">CSS</label>
    <input type="radio" name="webfeature" value="css" id="css">
</fieldset>

Hai notato l'elemento <legend> all'interno dell'elemento <fieldset>? Per cosa pensi che venga utilizzato?

Se la tua risposta è "per descrivere il gruppo di controlli del modulo", hai ragione.

Ogni elemento <fieldset> richiede un elemento <legend>, proprio come ogni controllo del modulo necessita di un elemento <label> associato. <legend> deve essere anche il primo elemento di <fieldset>. Dopo l'elemento <legend>, puoi definire i controlli del modulo che devono far parte del gruppo.

Inviare un modulo

Dopo aver imparato ad aggiungere i controlli del modulo e a raggrupparli, potresti chiederti come un utente può inviare un modulo.

La prima opzione è utilizzare un elemento <button>.

<button>Submit</button>

Dopo che un utente ha fatto clic sul pulsante Invia, il browser invia una richiesta all'URL specificato nell'<form> dell'attributo action con tutti i dati dei controlli del modulo.

Puoi anche utilizzare un elemento <input> con type="submit" anziché un elemento <button>. L'input ha l'aspetto e il comportamento di un <button>. Anziché utilizzare un elemento <label> per descrivere <input>, utilizza l'attributo value.

<input type="submit" value="Submit">

Inoltre, un modulo può essere inviato anche utilizzando il tasto Enter quando un campo del modulo è attivo.

Verifica la comprensione

Metti alla prova le tue conoscenze sugli elementi del modulo

Come si collega un <label> a un controllo modulo?

for='color' il giorno <label> e name='color' il giorno <input>.
Riprova.
for='color' il giorno <label> e id='color' il giorno <input>.
Esatto!
id='color' il giorno <label> e for='color' il giorno <input>.
Riprova.
name='color' il giorno <label> e for='color il giorno <input>.
Riprova.

Cosa utilizzi per un controllo modulo multilinea?

Elemento <input> con type='multi-line'.
Riprova.
L'elemento <text>.
Riprova.
L'elemento <textarea>.
🎉
Elemento <input> con type='long'.
Riprova.

Come si invia un modulo?

Fare clic su un elemento <button>.
Esatto, questa è un'opzione.
Utilizzo del tasto Enter.
Esatto, questa è un'opzione.
Fare clic su un elemento <input> con type='submit'.
Esatto, questa è un'opzione.

Risorse