Moduli HTML ottimizzati per dispositivi mobili: input, textarea, select, checkbox e radio

by Anastasia P.
SHARE
Moduli HTML ottimizzati per dispositivi mobili: input, textarea, select, checkbox e radio
© Guida-HTML5.it

Introduzione

Un modulo HTML efficace non deve soltanto raccogliere dati: deve rendere l’inserimento rapido e naturale su smartphone, tablet e computer. Tastiere virtuali diverse, schermi ridotti e connessioni non sempre affidabili possono trasformare un semplice formulario in un’esperienza frustrante.

In questo tutorial realizzeremo un modulo di prenotazione per un laboratorio. L’esempio utilizza diversi controlli HTML nativi: input per testo, email, telefono e data, textarea per le note, select per una scelta tra opzioni, checkbox per accettare condizioni e radio per selezionare una sola modalità di partecipazione.

Il sotto-argomento principale è l’ottimizzazione dell’inserimento dati attraverso attributi come autocomplete, inputmode e enterkeyhint. Questi attributi non sostituiscono la validazione lato server, ma aiutano il browser e la tastiera virtuale a offrire un’interazione più comoda.

Codice completo

<form action="/prenotazione" method="post">
  <fieldset>
    <legend>Dati del partecipante</legend>

    <p>
      <label for="nome">Nome e cognome</label>
      <input
        type="text"
        id="nome"
        name="nome"
        autocomplete="name"
        required
        enterkeyhint="next">
    </p>

    <p>
      <label for="email">Indirizzo email</label>
      <input
        type="email"
        id="email"
        name="email"
        autocomplete="email"
        inputmode="email"
        required
        enterkeyhint="next">
    </p>

    <p>
      <label for="telefono">Numero di telefono</label>
      <input
        type="tel"
        id="telefono"
        name="telefono"
        autocomplete="tel"
        inputmode="tel"
        enterkeyhint="next">
    </p>
  </fieldset>

  <fieldset>
    <legend>Dettagli del laboratorio</legend>

    <p>
      <label for="data">Data preferita</label>
      <input
        type="date"
        id="data"
        name="data"
        required>
    </p>

    <p>
      <label for="corso">Laboratorio da frequentare</label>
      <select id="corso" name="corso" required>
        <option value="">Seleziona un laboratorio</option>
        <option value="html">HTML e moduli</option>
        <option value="css">CSS responsive</option>
        <option value="javascript">JavaScript per il browser</option>
      </select>
    </p>

    <p>Modalità di partecipazione</p>

    <p>
      <input
        type="radio"
        id="presenza"
        name="modalita"
        value="presenza"
        required>
      <label for="presenza">In presenza</label>
    </p>

    <p>
      <input
        type="radio"
        id="online"
        name="modalita"
        value="online">
      <label for="online">Online</label>
    </p>

    <p>
      <label for="note">Note aggiuntive</label>
      <textarea
        id="note"
        name="note"
        rows="5"
        maxlength="500"
        placeholder="Indica eventuali esigenze organizzative"
        enterkeyhint="done"></textarea>
    </p>
  </fieldset>

  <p>
    <input
      type="checkbox"
      id="consenso"
      name="consenso"
      value="accettato"
      required>
    <label for="consenso">
      Accetto il trattamento dei dati per gestire la prenotazione
    </label>
  </p>

  <button type="submit">Invia prenotazione</button>
</form>

Spiegazione

Input e tastiera mobile

Il valore di type comunica al browser la natura del dato. Con type="email", alcuni browser mostrano una tastiera con il carattere “@” più facilmente raggiungibile. Con type="tel", invece, viene proposta una tastiera numerica o telefonica.

L’attributo inputmode suggerisce quale tastiera visualizzare senza modificare il tipo semantico del controllo. Per esempio, inputmode="email" migliora l’inserimento su smartphone, mentre inputmode="tel" è adatto ai numeri telefonici. Non bisogna usare inputmode come sostituto di type: il tipo descrive il dato, mentre inputmode riguarda principalmente l’interfaccia.

autocomplete permette al browser di proporre dati già noti all’utente. I valori standard, come name, email e tel, sono preferibili a nomi inventati perché funzionano meglio con i browser moderni e con i gestori di password.

Textarea e select

La textarea è indicata per contenuti composti da più righe. L’attributo maxlength limita la quantità di testo inseribile e comunica un limite concreto all’utente. Il testo di placeholder deve essere un suggerimento, non l’unica descrizione del campo: per questo viene mantenuta anche una label visibile.

Il controllo select è utile quando le opzioni sono poche e predefinite. La prima opzione, con valore vuoto, costringe l’utente a effettuare una scelta reale quando il campo è obbligatorio. Il valore inviato al server sarà quello dell’attributo value, non necessariamente il testo mostrato all’utente.

Radio e checkbox

I radio button condividono lo stesso attributo name, quindi appartengono allo stesso gruppo e consentono una sola scelta. I checkbox, invece, rappresentano una scelta indipendente. Nel codice il checkbox del consenso è obbligatorio tramite required.

Best practice

  • Usa un tipo di input coerente con il dato: email per gli indirizzi, tel per i telefoni e date per le date.
  • Associa ogni controllo a una label tramite gli attributi for e id.
  • Imposta nomi comprensibili e stabili, perché saranno utilizzati dal server per leggere i dati inviati.
  • Limita la lunghezza dei testi con maxlength quando esiste un limite reale.
  • Non usare il placeholder per sostituire la label: scompare appena l’utente inizia a digitare.
  • Usa autocomplete solo con valori standard e pertinenti al contenuto del campo.
  • Non forzare tastiere numeriche per dati che possono contenere lettere, spazi o simboli.
  • Raggruppa controlli correlati con fieldset e descrivili con legend.
  • Verifica sempre i dati anche lato server: gli attributi HTML migliorano l’esperienza, ma non costituiscono una protezione.

Riepilogo

Un modulo ottimizzato per dispositivi mobili nasce dalla combinazione di semantica e praticità. Gli elementi input, textarea, select, radio e checkbox descrivono correttamente i dati, mentre autocomplete, inputmode ed enterkeyhint rendono più fluida la compilazione.

La soluzione migliore è affidarsi ai controlli HTML nativi, usare nomi coerenti e offrire etichette sempre visibili. In questo modo il modulo resta comprensibile, utilizzabile su schermi diversi e pronto per essere collegato a un backend.

Approfondisci con risorse ufficiali

  • MDN Web Docs: documentazione sugli elementi HTML form, input, textarea e select.
  • WHATWG HTML Standard: specifica ufficiale dei controlli e degli attributi dei moduli.
  • MDN Web Docs: guida sui valori disponibili per autocomplete e inputmode.
  • W3C Web Accessibility Initiative: indicazioni per progettare moduli comprensibili e utilizzabili.

SHARE