Aide à la saisie
La mise en place d'aide à la saisie doit respecter des règles d'accessibilité.
Champ obligatoire
Si un des champs du formulaire est obligatoire :
- la mention de la présence de champs obligatoires dans le formulaire sera signalée au début du formulaire ;
- on signalera pour chaque champ obligatoire que celui-ci l’est,
- soit en l’écrivant entre les balises
<label>
; exemple :<label>... (champ obligatoire)</label>
, - soit par un signe distinctif (qui aura été présenté en début de formulaire) intégré entre les balises
<label>
. Ce signe ne sera pas implémenté via CSS pour être accessible.
- soit en l’écrivant entre les balises
- le champ obligatoire sera codé avec l’attribut
required
.
Rappel : en aucun cas, on ne signalera le champ obligatoire en utilisant la couleur (exemple de non conformité : “Les champs obligatoires sont signalés en rouge”).
<form ...>
<p>Les champs signalés par une étoile(*) sont obligatoires.</p>
<label for="nom">Nom *</label>
<input type="text" name="nom" id="nom" required>
[...]
</form>
Aide à la saisie
Information textuelle d’aide à la saisie
Information simple
Les aides à la saisie :
- sont intégrées directement entre les éléments
label
; - permettent de connaître le format de saisie attendu (ex: 25/11/1987) ;
- permettent de connaître le type et le poids maximal autorisé pour l’envoi de fichiers.
<label for="numero">Numéro d'immatriculation de votre véhicule (Format attendu : AB-123-CD)
<input type="text" id="numero" name="numero" />
</label>
<label for="photo">Photo de profil
<input type="file" id="photo" name="photo" />
<span>Format autorisé : .jpg, .gif, .png - Poids maximum 100 ko.</span>
</label>
Information complexe
Les informations à délivrer pour remplir un champ peuvent nécessiter une zone plus importante. Elles seront alors implémentées à l’aide de l’attribut aria-describedby
.
<label for="mdp">Mot de passe</label>
<input type="password" id="mdp" name="mdp" aria-describedby="quoi" />
<div class="quoi">
<h2>Votre mot de passe doit contenir : </h2>
<ul>
<li>au moins 12 caractères</li>
<li>des lettres en majuscule et en minuscule</li>
<li>au moins un chiffre</li>
<li>au moins un signe parmi : &*-,;</li>
</ul>
<p>Vous ne pouvez pas utiliser les trois derniers mots de passe déjà renseignés.</p>
</div>
Autocomplétion
L’autocomplétion permet de faciliter le remplissage des champs en proposant des valeurs pré-renseignées ou des suggestions de saisie.
Proposition de pré-remplissage avec l’attribut autocomplete
L’attribut autocomplete
permet de faciliter le remplissage des champs qui contiennent une information personnelle enregistrée au préalable par l’utilisateur.
Voici les attributs les plus courants :
- Nom :
<input type="text" auto-complete="name" ...>
- Prénom :
<input type="text" auto-complete="given-name" ...>
- Mail :
<input type="mail" auto-complete="email" ...>
- Téléphone :
<input type="tel" auto-complete="tel" ...>
- Identifiant (nom d’utilisateur) :
<input type="text" auto-complete="username " ...>
- Mot de passe (associé à l’identifiant) :
<input type="password" auto-complete="current-password" ...>
Pour voir la liste complète, consulter la page “input-purpose” du W3C.
Suggestion de saisie de valeur
Cette implémentation permet de proposer des valeurs pré-définies à l’utilisteur. Pour autant, celui-ci pourra tout de même renseigner une valeur qui n’est pas proposée au moment où il commence à remplir le champs.
Cette implémentation de fait de la manière suivante :
- un attribut
list
posé sur le champsinput
et faisant référence à l’id
de l’élémentdatalist
; - un élément
datalist
contenant autant d’élémentsoption
qu’il a y de propositions de saisie.
Visuel
Choix suggéré : blanc, bleu, jaune, noir, rouge, vert, violet
Code HTML
<label for="couleur">Votre couleur préférée</label>
<input name="couleur" id="couleur" list="listeCouleurs" value="">
<datalist id="listeCouleurs">
<option>Blanc</option>
<option>Bleu</option>
<option>Jaune</option>
<option>Noir</option>
<option>Rouge</option>
<option>Vert</option>
<option>Violet</option>
</datalist>
Gestion des erreurs
Titre de la page
En cas d’erreur, le titre de la page HTML sera modifiée en conséquence.
<head>
<title>Erreur - Formulaire d'envoi de votre commande</title>
...
</head>
Message d’erreur global
Un message d’erreur global peut être implémenté au début du formulaire il aura alors le rôle role="alert"
.
Cette zone prévue pour recevoir le message d’alerte global sera implémentée à vide dans la formulaire puis peuplée au moment du retour d’erreur.
<form>
<div role="alert"></div>
...
</form>
astuce
Dans la rubrique Motifs de conception - Message d'alerte, des informations supplémentaires sont proposées sur l'implémentation d'un élément portant le rôle alert
.
Message d’erreur contextuel (associé au champ en erreur)
La gestion des erreurs doit suivre les règles suivantes :
- Le message d’erreur est implémenté accolé au champ en erreur ;
- Le message d’erreur explique les raisons de l’erreur de manière claire et sans ambiguïté ;
- Le message d’erreur rappelle ce qui est attendu dans le champ et donne des suggestions de correction (exemple : Veuillez renseigner un email valide du type nom@domaine.fr) ;
- Le message d’erreur est relié au champ grâce à l’attribut
aria-labelledby
pour pouvoir être restitué par les logiciels de synthèse vocale - Le focus clavier est mis sur le premier champ en erreur afin de pouvoir parcourir tout le formulaire ;
- Le champ en erreur (et/ou son label) n’est pas signalé uniquement par la couleur (le champ en erreur pourra alors avoir une bordure plus grosse par exemple et son libellé écrit en gras) ;
- Le champ en erreur possède l’attribut
aria-invalid="true"
; - Le message d’erreur pour un champ obligatoire qui n’est pas renseigné est contextualisé et unique (exemple : Le champ “Nom” est obligatoire).
Exemple de code HTML
<label for="email">Adresse e-mail</label>
<input type="email" id="email" name="email" autocomplete="email" required aria-invalid="true" aria-labelledby="erreurEmail" />
<div id="erreurEmail">
<p id="emailObligatoire">Le champ email est obligatoire.</p>
<p id="emailFormatage">Veuillez renseigner un email valide (prenom.nom@domaine.com)</p>
</div>
Gestion du succès
À l’issue de la soumission du formulaire, si celle-ci s’est bien passée, il faut afficher un message de notification pour en informer l’utilisateur. Ce message peut reprendre une partie des données renseignées dans le formulaire. Ce message de succès / confirmation s’implémente via le rôle aria role="status"
<div role="status">
<h2>Succès</h2>
<p>Votre demande a bien été envoyée ; vous recevrez bientôt un mail de confirmation à l'adresse suivante : martin@gmail.com.</p>
</div>