Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 23 di 51
  • livello principiante
Indice lezioni

Nuovi attributi dei form per la validazione

Analisi degli attributi required, autocomplete, multiple, pattern, min, max, step, novalidate
Analisi degli attributi required, autocomplete, multiple, pattern, min, max, step, novalidate
Link copiato negli appunti

La validazione dei form è forse l'argomento relativo ai form più importante. Vediamo subito in dettaglio che cosa ci propone la nuova specifica HTML5.

required

required è un attributo booleano e serve a rendere obbligatoria la compilazione dell'elemento a cui è applicato. La condizione viene valutata al submit del form.

Ecco un esempio di utilizzo:

<form name="commenti" method="post" action="/141/comments">
  [...]
  <label>Messaggio:
    <textarea name="messaggio" placeholder="Scrivi qui il tuo messaggio (max 300 caratteri)" maxlength="300" required></textarea>
  </label>
  [...]
  <input type="reset"  value="Resetta il form">
  <input type="submit" value="Invia il commento">
</form>

autocomplete

Anche se questo attributo non è esattamente un attributo per le validazioni, abbiamo deciso di inserirlo in questa lezione in quanto previene un comportamento dei browser non sempre voluto: spesso i browser riempiono i campi da inserire in maniera automatica.

Questo comportamento è nella maggior parte dei casi un comportamento comodo, però in alcuni casi è fastidioso. Si pensi per esempio ai campi password o ai campi del codice della banca: probabilmente non vogliamo che il browser li completi in automatico.

Ecco che arriva in nostro soccorso l'attributo autocomplete che è un attributo enumerato. In particolare i valori che accetta sono:

  • on: indica che il valore non è particolarmente sensibile e che il browser può compilarlo in maniera automatica;
  • off: indica che il valore è particolarmente sensibile o con un tempo di scadenza (il codice di attivazione di un servizio, per esempio) e che quindi l'utente deve inserirlo manualmente ogni volta che lo compila;
  • nessun valore: indica in questo caso di usare il valore di default scelto dal browser (normalmente on).

Ecco un esempio di utilizzo:

<form name="commenti" method="post" action="/141/comments">
  [...]
  <label>Nick:
    <input type="text" name="nickname" autocomplete="on"
        required pattern="[a-z]{1}[a-z_]{2,19}"
        title="Un nickname è composto da lettere minuscole e '_'; Sono consentiti da 3 a 20 caratteri."
        placeholder="your_nickname">
  </label>
  [...]
  <input type="reset"  value="Resetta il form">
  <input type="submit" value="Invia il commento">
</form>

multiple

In molti casi abbiamo bisogno che l'utente possa inserire più valori per lo stesso input (per esempio se gli stiamo chiedendo gli indirizzi e-mail di amici a cui inviare un invito).

Ecco che arriva in nostro soccorso l'attributo multiple che è un attributo booleano.

Un esempio di utilizzo:

<form>
  <label>eMail a cui inviare l'invito:
    <input type="email" multiple name="friendEmail"
  </label>
  [...]
  <input type="reset"  value="Resetta il form">
  <input type="submit" value="Invia">
</form>

pattern

In molti casi abbiamo bisogno di validare un determinato input verificando che il valore inserito sottostia a determinate regole di creazione (per esempio potremmo volere che il campo password non contenga spazi).

Possiamo contare in questi casi sull'attributo pattern.

Il valore di pattern, se specificato, deve essere una espressione regolare valida.

Se viene indicato l'attributo pattern bisognerebbe indicare anche il title per dare una descrizione del formato richiesto, altrimenti il messaggio di errore sarà generico e probabilmente di poco aiuto.

Ecco un esempio di utilizzo:

<form name="commenti" method="post" action="/141/comments">
  [...]
  <label>Nick:
    <input type="text" name="nickname" autocomplete="on"
        required pattern="[a-z]{1}[a-z_]{2,19}"
        title="Un nickname è composto da lettere minuscole e '_'; Sono consentiti da 3 a 20 caratteri."
        placeholder="your_nickname">
  </label>
  [...]
  <input type="reset"  value="Resetta il form">
  <input type="submit" value="Invia il commento">
</form>

In questo esempio si sta richiedendo che lo username sia una parola in minuscolo composta solo da lettere e da "_", di una lunghezza minima di 3 caratteri e massima di 20 e che non cominci con "_"

min e max

I valori min e max descrivono rispettivamente il valore minimo e massimo consentito.

Il valore di max deve essere maggiore del valore di min se indicato.

Questi attributi si applicano sia alle date (come detetime, date, month) sia ai numeri (number e range). Per maggiore dettagli rimandiamo alle lezioni che trattano in maniera specifica questi nuovi tipi di input.

Ecco un esempio di utilizzo:

<form name="commenti" method="post" action="/141/comments">
  [...]
  <label>Età:
    <input type="number" name="age" min="13" max="130" step="1">
  </label>
  [...]
  <input type="reset"  value="Resetta il form">
  <input type="submit" value="Invia il commento">
</form>

In questo caso stiamo chiedendo un'età compresa tra i 13 e i 130 anni (estremi compresi).

step

Il valore step definisce la distanza che intercorre tra un valore e il successivo. Definisce, in altre parole, la granularità dei valori permessi.

Il valore di step deve essere un valore positivo non nullo.

Questo attributo si applica sia alle date (come detetime, date, month) sia ai numeri (number e range).

Ecco un esempio di utilizzo:

<form name="commenti" method="post" action="/141/comments">
  [...]
  <label>Età:
    <input type="number" name="age" min="13" max="130" step="1">
  </label>
  [...]
  <input type="reset"  value="Resetta il form">
  <input type="submit" value="Invia il commento">
</form>

In questo caso stiamo chiedendo solo valori interi.

novalidate

Questo attributo si applica al tag form e permette di saltare tutte le validazioni dei tag che da esso discendono.

novalidate è un attributo booleano.

Ecco un esempio di utilizzo:

<form novalidate>
  <label>Età:
    <input type="email" name="myEmail" required>
  </label>
  <input type="reset"  value="Resetta il form">
  <input type="submit" value="Invia">
</form>

In questo caso non verrà controllato che il campo email sia in un formato valido né che sia presente.

Tabella del supporto sui browser

Form: nuovi attributi Internet Explorer Firefox Safari Google Chrome Opera
autocomplete No No No No 10.6+
min, max No No Nightly build Nightly build 9.0+
multiple No 3.6+ 4.0+ 2.0+ 11.0+
pattern No 4.0+ 4.0+ 2.0+ 9.0+
required No 4.0+ 4.0+ 2.0+ 9.0+
step No No 4.0+ 2.0+ 9.0+

Ti consigliamo anche