Les champs requis non complétés ou ne respectant pas une certaine règle de syntaxe définie par le type du formulaire, ou par l'attribut pattern bloquent le processus d'envoi des données d'un formulaire.
Cette validation à la volée permet à l'utilisateur d'être informé très rapidement de ses erreurs et de les corriger étape par étape grâce aux indications fournies par les infobulles situées sous chacun des champs invalides.

Aperçu d'un champ requis après validation sur Chrome
Mise en place d'un pattern
Des patterns par défaut existent pour certains types de champ, comme les champs de type email ou url par exemple, qui attendent des formats spécifiques.
Voir également : Nouveaux champs de formulaire HTML5
D'autres patterns - ou masques - peuvent être créés sur-mesure, grâce à l'attribut pattern qui accepte une expression régulière.
<input type="text" pattern="[A-F][0-9]{5}">
Ce champ attend une valeur numérique d'au moins 5 chiffres précédés d'une lettre majuscule comprise entre A et F.
Si le format n'est pas respecté, le navigateur en informe l'utilisateur.

Éléments compatibles
L'attribut pattern peut être placé uniquement sur l'élément <input> ayant pour types text, search, password, url, tel, email.
Styler le statut d'un champ avec :valid et :invalid

CSS3 prévoit deux pseudo-classes que sont :valid et :invalid afin de marquer clairement les champs... valides et invalides.
Il est alors possible d'écraser les styles par défaut appliqués à ces éléments par les navigateurs, qui différent :
-
Firefox attribue la propriété
box-shadow(rouge) au champ. -
Internet Explorer utilise la propriété
border-color(rouge). - Chrome et Opera n'ajoutent aucun style, mais placent le focus sur le premier champ erroné.
Par défaut, aucun style particulier n'est appliqué lorsque le pattern est respecté.
Il suffit d'appliquer ces styles pour que cela change :
:valid {
box-shadow: 0 0 2px 1px green;
}
Compatibilité de l'attribut pattern
| Navigateurs | Versions |
|---|---|
|
|
Firefox 4.0+ |
|
|
Opera 9.5+ |
|
|
Chrome 3.0+ |
|
|
Internet Explorer 10+ |