Formulaires

31 janvier 2023

RGAA : Formulaires

Étiquette de champ

Une étiquette pertinente :

Dans le code, le champ doit avoir un nom accessible

Le placeholder n’est pas un nom accessible robuste

Information complémentaire

Nom visible et nom accessible

Le nom visible doit être contenu dans le nom accessible
Attention à l'algorithme de calcul du nom accessible

Regroupement de champs

Réunir les éléments communs avec :

La légende peut être masqué mais doit être restitué par les lecteurs d'écran

Exemple courant de regroupement à faire :

Liste de choix

Regrouper les items de même nature d’une liste de choix <select> si nécessaire

<select>
    <optgroup label="Véhicules">
        <option>Voiture</option>
        <option>Motos</option>
        …
    </optgroup>
    <optgroup label="Immobilier">
        <option>Maison</option>
        <option>Appartements</option>
        …
    </optgroup>
</select>

Intitulés de bouton

<input type="submit" value="Envoyer le message" />

<input type="image" src="loupe.png" alt="Rechercher sur le site">

<input type="submit" value="OK" title="Envoyer le message" />

<input type="submit" aria-label="Effacer mes données"/>

<input type="submit" aria-labelledby="desc-btn" />
<span id="desc-btn">Envoyer le message</span>

Champ obligatoire et facultatif

Aides et contrôles de saisie

Message d'erreur

Le message doit être visible est restitué
Les textes liés par les propriétés aria-labelledby ou aria-describedby font partie des propriétés de l’élément, ils sont donc toujours disponibles, y compris lorsqu’ils sont cachés par CSS avec display:none ou visibility:hidden

Champ obligatoire : format attendu à fournir (a faire de facon global si possible)
Message générique dans le titre de la page : « erreur sur le formulaire » est très suffisant

Personnaliser les messages d’erreurs natif

L'API Constraint validation permet de personnaliser les messages d’erreurs générés par les type d’input particuliers.

<form>
    <label class="label" for="emailform">Votre email:</label>
    <p><input type="email" name="email" id="emailform"></p>
    <input type="submit" value="valider">
</form>
var email = document.getElementById("emailform");
email.addEventListener('invalid', function() {
    if (this.value.trim() !== '') {
        this.setCustomValidity("Saisie invalide. Exemple valide\n: toto@foobar.com");
    }
}, false);

Modification, mises à jour ou récupération des données

Si le formulaire

L'utilisateurs doit pouvoir

Pour les formulaires de signature électronique, type mandat SEPA, la modification peut être désactivé comme le but de ces formulaires est de valider les données saisies précédemment

Champs avec saisi automatique

Pour les champs qui collectent des informations personnelles sur l’utilisateur, la nature du champ (finalité) est déterminable à partir du code (attributs/propriétés).

Utilisation de l’attribut autocomplete

La liste des valeurs disponibles est fournie par la spécification WCAG 2.1 :

Retour en haut