Introduzione alla convalida del vincolo HTML5
I siti Web e le applicazioni interattive non possono essere immaginati senza moduli che ci consentano di farlo connettersi con i nostri utenti, e a ottenere i dati abbiamo bisogno per garantire transazioni regolari con loro. Abbiamo bisogno input utente valido, tuttavia abbiamo bisogno di acquisirlo in un modo che non è frustrante i nostri utenti troppo.
Mentre possiamo migliorare l'usabilità dei nostri moduli con modelli di progettazione UX scelti in modo intelligente, HTML5 ha anche un meccanismo nativo per la convalida dei vincoli che ci consente di cattura gli errori di input direttamente nel front-end.
In questo post, ci concentreremo su convalida del vincolo fornita dal browser, e guarda in che modo gli sviluppatori di frontend possono farlo sicuro input utente valido usando HTML5.
Perché abbiamo bisogno della convalida dell'input del front-end
Convalida dell'input ha due obiettivi principali. Il contenuto che otteniamo deve essere:
1. Utile
Abbiamo bisogno dati utilizzabili con cui possiamo lavorare. Dobbiamo far entrare le persone dati realistici nel formato giusto. Ad esempio, nessuno che è vivo oggi è nato 200 anni fa. Ottenere dati come questo può sembrare strano all'inizio, ma a lungo termine è fastidioso e popola il nostro database con dati inutili.
2. Sicuro
Quando ci si riferisce alla sicurezza, questo significa che è necessario impedire l'iniezione di contenuti dannosi - sia intenzionale che per caso.
Utilità (ottenendo dati ragionevoli) può essere raggiunta solo dal lato client, la squadra di back-end non può aiutare troppo con questo. Per raggiungere sicurezza, gli sviluppatori front e back-end devono collaborare.
Se gli sviluppatori di frontend validano correttamente input sul lato client, il il team di back-end dovrà affrontare molte meno vulnerabilità. L'hacking (un sito) spesso comporta invio di dati aggiuntivi, o dati nel formato sbagliato. Gli sviluppatori possono combattere buche di sicurezza come queste, combattere con successo dal front-end.
Ad esempio, questa guida alla sicurezza di PHP consiglia di controllare tutto ciò che possiamo dal lato client. Sottolineano l'importanza della convalida dell'input di frontend fornendo molti esempi, come ad esempio:
"La convalida dell'input funziona meglio con valori estremamente limitati, ad esempio quando qualcosa deve essere un numero intero o una stringa alfanumerica o un URL HTTP."
Nella convalida dell'input del frontend, il nostro compito è quello di imporre limiti ragionevoli sull'input dell'utente. La funzione di convalida dei vincoli di HTML5 ci fornisce i mezzi per farlo.
Convalida vincoli HTML5
Prima di HTML5, gli sviluppatori di frontend erano limitati a convalida dell'input dell'utente con JavaScript, che era un processo noioso e soggetto a errori. Per migliorare la convalida dei moduli lato client, HTML5 ha introdotto a convalida dei vincoli algoritmo che viene eseguito nei browser moderni e controlla la validità dell'input presentato.
Per fare la valutazione, l'algoritmo usa il attributi relativi alla validazione degli elementi di input, ad esempio ,
, e
. Se vuoi sapere come la convalida dei vincoli avviene passo dopo passo nel browser, controlla questo documento WhatWG.
Grazie alla funzionalità di convalida dei vincoli di HTML5, possiamo eseguire tutto compiti di convalida dell'input standard dal lato del cliente senza JavaScript, solo con HTML5.
Per eseguire attività più complesse relative alla convalida, HTML5 ci fornisce a API JavaScript di convalida vincoli possiamo usare per impostare i nostri script di convalida personalizzati.
Convalida con tipi di input semantici
HTML5 ha introdotto tipi di input semantici questo, oltre a indicare il significato dell'elemento per i programmi utente, può anche essere usato per convalidare l'input dell'utente limitando gli utenti a un determinato formato di input.
Oltre ai tipi di input che sono già esistiti prima di HTML5 (testo
, parola d'ordine
, Sottoscrivi
, reset
, Radio
, casella di controllo
, pulsante
, nascosto
), possiamo anche usare il seguente tipi di input HTML5 semantico: e-mail
,tel
,url
,numero
,tempo
,Data
,appuntamento
,datetime-locali
, mese
,settimana
, gamma
, ricerca
,colore
.
Possiamo tranquillamente utilizzare i tipi di input HTML5 con i browser più vecchi, poiché si comportano come un campo nei browser che non li supportano.
Vediamo cosa succede quando l'utente inserisce il tipo di input sbagliato. Supponiamo di aver creato un campo di input email con il seguente codice:
Quando l'utente digita una stringa che non utilizza un formato email, l'algoritmo di convalida dei vincoli non invia il modulo, e restituisce un messaggio di errore:
La stessa regola si applica anche ad altri tipi di input, ad esempio per type = "url"
gli utenti possono solo inviare un input che segue il formato URL (inizia con un protocollo, come ad esempio http: //
o ftp: //
).
Alcuni tipi di input usano un design non consente nemmeno agli utenti di inserire un formato di input errato, per esempio colore
e gamma
.
Se usiamo il colore
tipo di input l'utente è vincolato a scegliere un colore dal selettore di colori o rimanere con il nero predefinito. Il campo di input è vincolato dal design, quindi non lascia molte possibilità di errore dell'utente.
Quando è appropriato, vale la pena considerare l'utilizzo del Tag HTML che funziona in modo simile a questi tipi di input vincolati per progetto; consente agli utenti di scegliere da un elenco a discesa.
Utilizza gli attributi di convalida di HTML5
L'utilizzo di tipi di input semantici stabilisce alcuni vincoli su ciò che gli utenti possono inviare, ma in molti casi vogliamo andare un po 'oltre. Questo è quando il attributi relativi alla convalida del l'etichetta può aiutarci.
Gli attributi relativi alla convalida appartengono a determinati tipi di input (su cui non possono essere utilizzati tutti tipi) sui quali impongono ulteriori vincoli.
1. necessario
per ottenere un input valido con tutti i mezzi
Il necessario
l'attributo è l'attributo di convalida HTML più noto. È un attributo booleano il che significa che non ha alcun valore, dobbiamo semplicemente metterlo dentro il tag se vogliamo usarlo:
Se l'utente si dimentica di inserire un valore in un campo di input richiesto, il browser restituisce un messaggio di errore che li avverte di riempire il campo, e loro non può inviare il modulo fino a quando non hanno fornito un input valido. Ecco perché è importante sempre segnare visivamente campi obbligatori per gli utenti.
Il necessario
l'attributo può essere usato insieme ai seguenti tipi di input: testo
, ricerca
, url
, tel
, e-mail
, parola d'ordine
, Data
, appuntamento
, datetime-locali
, mese
, settimana
,tempo
, numero
, casella di controllo
, Radio
, file
, più con il e
Tag HTML.
2. min
, max
e passo
per la convalida del numero
Il min
, max
e passo
gli attributi ci permettono di metti dei vincoli sui campi di inserimento dei numeri. Possono essere usati insieme al gamma
, numero
, Data
, mese
, settimana
, appuntamento
, datetime-locali
, e tempo
tipi di input.
Il min
e max
gli attributi forniscono un ottimo modo per facilmente escludere dati irragionevoli. Ad esempio l'esempio qui sotto costringe gli utenti a presentare un'età tra 18 e 120.
Quando l'algoritmo di convalida dei vincoli urta in un input dell'utente inferiore al min
, o più grande del max
valore, impedisce di raggiungere il back-end e restituisce un messaggio di errore.
Il passo
attributo specifica un intervallo numerico tra i valori legali di un campo di input numerico. Ad esempio, se vogliamo che gli utenti scelgano solo negli anni bisestili, possiamo aggiungere il step = "4"
attributo al campo. Nell'esempio seguente ho usato il numero
tipo di input, in quanto non c'è type = "anno"
in HTML5.
Con i vincoli preimpostati, gli utenti possono scegliere solo tra gli anni bisestili tra il 1972 e il 2016 se usano la piccola freccia in su che viene fornita con numero
tipo di input. Possono anche digitare manualmente un valore nel campo di input, ma nel caso non soddisfi i vincoli, il browser restituirà un messaggio di errore.
3. lunghezza massima
per la convalida della lunghezza del testo
Il lunghezza massima
attributo rende possibile imposta una lunghezza massima del carattere per i campi di input testuali. Può essere usato insieme al testo
, ricerca
, url
, tel
, e-mail
e parola d'ordine
tipi di input e con il Tag HTML.
Il lunghezza massima
l'attributo può essere un'ottima soluzione per i campi del numero di telefono che non possono avere più di un certo numero di caratteri o per i moduli di contatto in cui non vogliamo che gli utenti scrivano più di una certa lunghezza.
Il frammento di codice seguente mostra un esempio per quest'ultimo, limita i messaggi utente a 500 caratteri.
Il lunghezza massima
attributo non restituisce un messaggio di errore, ma il browser semplicemente non consente agli utenti di digitare più del numero di caratteri specificato. Ecco perché è fondamentale informare gli utenti del vincolo, altrimenti non capiranno perché non possono continuare con la digitazione.
4. modello
per la convalida del Regex
Il modello
attributo ci permettono di usa le espressioni regolari nel nostro processo di convalida dell'input. Un'espressione regolare è a set predefinito di caratteri che formano un certo schema. Possiamo usarlo sia per cercare stringhe che seguono lo schema, sia per far rispettare un determinato formato definito dal pattern.
Con il modello
attributo possiamo fare il secondo - costringere gli utenti a inviare i loro input in un formato che corrisponde all'espressione regolare data.
Il modello
l'attributo ha molti casi d'uso, ma può essere particolarmente utile quando vogliamo convalidare un campo password.
L'esempio seguente richiede agli utenti di inserire una password di almeno 8 caratteri e che contenga almeno una lettera e un numero (fonte della regex che ho usato).
Ancora un paio di cose
In questo articolo, abbiamo visto come utilizzare il convalida del modulo fornita dal browser fornito dall'algoritmo di convalida del vincolo nativo di HTML5. Per creare i nostri script di convalida personalizzati, è necessario utilizzare l'API Convalida convalida che può essere il prossimo passo per perfezionare le competenze di convalida dei moduli.
I moduli HTML5 sono accessibili tramite tecnologie assistive, quindi non dobbiamo necessariamente usare il Aria-required
Attributo ARIA per contrassegnare i campi di input richiesti per gli screen reader. Tuttavia può essere ancora utile aggiungere il supporto dell'accessibilità per i browser più vecchi. È anche possibile disattivare la convalida dei vincoli aggiungendo il novalidate
attributo booleano al elemento.