Le WordPress d'aujourd'hui, décodé pour les développeurs

Accessibilité

Autocomplete manquant sur un formulaire de contact : le critère RGAA 11.13

Pourquoi un champ « E-mail » sans attribut autocomplete pénalise certains visiteurs, et comment le critère RGAA 11.13 impose d'y remédier simplement.

Par WordPress Développement • 13 août 2022 • 5 min de lecture • Aucun commentaire
Autocomplete manquant sur un formulaire de contact : le critère RGAA 11.13

Pourquoi un visiteur qui utilise un gestionnaire de mots de passe ou une aide à la saisie doit-il retaper son adresse e-mail à la main sur un formulaire de contact, alors que son navigateur connaît déjà cette information ? La réponse tient souvent à un seul attribut HTML oublié : autocomplete.

Ce tutoriel s’adresse à un développeur de thème qui personnalise un formulaire de contact WordPress, qu’il soit généré par un plugin ou codé à la main dans un template. Il couvre l’ajout des valeurs autocomplete pertinentes, exigées par le critère 11.13 du RGAA 4.1, sans entrer dans la validation côté serveur des champs, qui relève d’un sujet distinct.

Ce que dit le critère RGAA 11.13

Le référentiel général d’amélioration de l’accessibilité, dans sa version 4.1, formule ainsi le critère 11.13 : « Dans chaque formulaire, le remplissage automatique des champs de même nature est-il facilité, chaque fois que c’est possible ? ». Ce critère reprend l’esprit du critère de succès WCAG 1.3.5, « Identifier la finalité de la saisie », qui demande que la finalité d’un champ de formulaire lié aux informations de l’utilisateur puisse être déterminée par programmation.

Concrètement, le RGAA attend qu’un champ dont la finalité figure dans la liste normalisée de la spécification HTML — nom, e-mail, téléphone, adresse postale, entre autres — porte l’attribut autocomplete avec la valeur correspondante. Un formulaire de contact classique en comporte souvent trois ou quatre : nom, e-mail, téléphone, message.

Le formulaire tel qu’il existe avant correction

Voici le balisage de départ, un formulaire de contact simple codé directement dans le template page-contact.php d’un thème sur mesure :

<form method="post" action="/contact/traiter/">
  <label for="nom">Nom</label>
  <input type="text" id="nom" name="nom">

  <label for="email">Adresse e-mail</label>
  <input type="email" id="email" name="email">

  <label for="telephone">Téléphone</label>
  <input type="tel" id="telephone" name="telephone">

  <label for="message">Message</label>
  <textarea id="message" name="message"></textarea>

  <button type="submit">Envoyer</button>
</form>

Le typage des champs est correct — type="email", type="tel" — mais aucun attribut autocomplete n’apparaît. Le navigateur peut deviner certaines finalités grâce au nom du champ, mais rien ne le garantit, en particulier pour les technologies d’assistance qui s’appuient sur cet attribut pour proposer une saisie vocale ou simplifiée.

L'essentiel à retenir : L'attribut autocomplete facilite le remplissage automatique ; Le critère RGAA 11.13 couvre les champs à finalité connue ; Une liste de valeurs normalisées existe pour chaque type de donnée

Étape 1 : identifier la finalité normalisée de chaque champ

La spécification HTML autonomie complète une liste de jetons reconnus pour l’attribut autocomplete. Pour ce formulaire, les correspondances sont directes :

  • Le champ « Nom » correspond au jeton name.
  • Le champ « Adresse e-mail » correspond au jeton email.
  • Le champ « Téléphone » correspond au jeton tel.
  • Le champ « Message » n’a pas de finalité normalisée : il reste sans attribut autocomplete, ou reçoit la valeur off si l’on souhaite explicitement décourager la suggestion automatique.

Étape 2 : ajouter les attributs au balisage

La correction consiste simplement à ajouter l’attribut sur chaque champ concerné :

<form method="post" action="/contact/traiter/">
  <label for="nom">Nom</label>
  <input type="text" id="nom" name="nom" autocomplete="name">

  <label for="email">Adresse e-mail</label>
  <input type="email" id="email" name="email" autocomplete="email">

  <label for="telephone">Téléphone</label>
  <input type="tel" id="telephone" name="telephone" autocomplete="tel">

  <label for="message">Message</label>
  <textarea id="message" name="message"></textarea>

  <button type="submit">Envoyer</button>
</form>

Étape 3 : vérifier le résultat

La vérification se fait en deux temps. D’abord manuellement : remplir une première fois le champ e-mail dans le navigateur, recharger la page, puis constater que le navigateur propose désormais une suggestion de saisie automatique dès le premier caractère tapé. Ensuite avec un outil d’audit automatisé, qui signale généralement les champs sans autocomplete reconnu sous une règle liée au critère de succès 1.3.5 du WCAG.

Conseil maison : sur un formulaire multi-champs, mieux vaut vérifier la liste des jetons dans la documentation HTML plutôt que de deviner — certains, comme street-address ou postal-code, sont moins évidents que name ou email.

Pour aller plus loin

Le critère RGAA 11.13 s’applique à tout champ dont la finalité figure dans la liste normalisée, pas seulement aux formulaires de contact : un formulaire de commande, un formulaire d’inscription à une newsletter ou un champ d’adresse de livraison en bénéficient tout autant. Ajouter systématiquement l’attribut autocomplete dès la conception du template, plutôt qu’en correction a posteriori, évite d’avoir à repasser sur chaque formulaire du site un par un.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Partager :

À propos de l'auteur

WordPress Développement

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi