Instructions du formulaire

Aperçu : Instructions du formulaire

Les instructions du formulaire aident les utilisateurs à comprendre la façon de remplir le formulaire et d’utiliser les commandes individuelles du formulaire. Indiquer les saisies, les formats de données et les autres renseignements pertinents requis.

Instructions générales

Fournir les instructions du formulaire au-dessus du formulaire avant la balise <form> d’ouverture. Indiquer toute saisie obligatoire et facultative, les formats de données autorisés, les limites de temps et toute instruction générale qui s’appliquent à l’ensemble du formulaire.

Remarque : Les utilisateurs du lecteur d’écran pourraient facilement rater les instructions générales du formulaire imbriquées dans un élément <form>. Les lecteurs d’écran entrent en « mode formulaires » une fois dans un formulaire, désactivant ainsi les raccourcis clavier de balayage de texte pour permettre à l’utilisateur de taper directement dans les champs input et textarea. La navigation au clavier se limite aux éléments pouvant être ciblés (saisies de formulaires, liens et autres commandes) au moyen de la touche Tab. Le texte qui n’est pas associé par un programme à un élément pouvant être ciblé – servant d’étiquette ou de description – est facilement omis.

Voici des exemples d'instructions pour un formulaire :

  • Tous les champs marqués « obligatoire » doivent être remplis.
  • Les dates doivent toutes être entrées selon le format aaaa/mm/jj (comme dans 2022/01/05).
  • Vous trouverez de l’aide supplémentaire immédiatement après chaque champ

Instructions incluses

Des instructions incluses sont fournies à l’intérieur ou à l’extérieur de l’étiquette de commande du formulaire. De courtes instructions peuvent être insérées dans l’étiquette avec le nom de la commande. Les instructions longues devraient être à l’extérieur de l’étiquette et être associées à la commande par l’aria-describedbyattribut aria-describedby.

Fournir des instructions dans les étiquettes

Les agents utilisateurs prennent en charge sans difficulté les instructions fournies dans les étiquettes, mais celles-ci devraient être réservées aux instructions plus courtes. Associer l’attribut for de l’étiquette à l’attribut id de la commande du formulaire.

  Bon exemple : Fournir des instructions dans une étiquette

Le format requis pour « l'identification de l'employé » est indiqué par le format « XX-1234 » dans la même étiquette :

HTML

<label for="employee-id">Employee ID (XX-1234)</label> 
<input type="text" name="employee-id" id="employee-id">

Fournir des instructions à l’extérieur des étiquettes

Utiliser ARIA pour fournir des instructions à l’extérieur des étiquettes. Associer tout texte descriptif du formulaire à l’élément pertinent du formulaire en utilisant l’attribut aria-labelledby ou aria-describedby.

 Bon exemple : Fournir des instructions de contrôle de formulaire en utilisant aria-labelledby

Une approche pour fournir des instructions en dehors des étiquettes utilise l'attribut aria-labelledby sur le contrôle :

  • Un élément <label> est associé à sa commande au moyen de valeurs d’attribut correspondantes for et id.
  • L'attribut aria-labelledby du contrôle fait référence aux valeurs de l'attribut id de l'élément lui-même et de l'élément contenant la description.

Cette approche garantit que la description supplémentaire est communiquée à la technologie d’assistance, mais elle ne devrait être utilisée qu’avec de courtes descriptions

1234-567-890-XX

HTML

<label for="health-card">Carte assurance maladie</label>
<input type="text" id="health-card" aria-labelledby="health-card hc-format" name="health-card">
<span id="hc-format">1234-567-890-XX</span>

  Bon exemple : Fournir des instructions de contrôle de formulaire avec aria-describedby

L'approche la plus courante pour fournir des instructions en dehors des étiquettes consiste à utiliser l'attribut aria-describedby. Cet attribut est défini sur le contrôle et pointe vers la valeur de l'attribut id de l'élément contenant la description.

Doit contenir au moins 8 caractères, une lettre majuscule et un caractère spécial.

HTML

<div class="form-group">
   <label for="password1">Mot de passe</label>
   <div>
      <input type="password" id="password1" aria-describedby="passDesc" name="password1">
      <div id="passDesc">Doit contenir au moins huit caractères, une lettre majuscule et un caractère spécial<</div>
   </div>
</div>

Texte d’espace réservé

Le texte de l'attribut placeholder fournit des instructions ou un exemple du format de données requis à l'intérieur des champs de formulaire qui n'ont pas encore été modifiés par l'utilisateur.

Notez que le texte de remplacement disparaît des champs d'un formulaire lorsque les utilisateurs commencent à saisir du texte. Si ce texte contient des informations pédagogiques ou des exemples qui disparaissent, il est plus difficile pour les utilisateurs de vérifier leurs réponses avant de soumettre le formulaire.

Le texte d’espace réservé ne remplace pas les étiquettes. Les technologies d’assistance comme les lecteurs d’écran ne traitent pas le texte d’espace réservé comme des étiquettes.

HTML

<div>
   <label for="search">Recherche</label> 
   <input type="text" name="search" id="search" placeholder="e.g., cours sur l’accessibilité">
</div>
<div>
   <label for="email">Courriel</label> 
   <input type="email" name="email" id="email" placeholder="jane.doe@gmail.com" autocomplete="email">
</div>

Styliser l’espace réservé

Dans de nombreux navigateurs, la couleur d’attribut placeholder réservé échoue au test de contraste, ce qui empêche de nombreuses personnes de voir distinctement. La couleur de l’espace réservé peut être stylisée à l’aide de CSS.

L’extrait de code ci-dessous établit la couleur d’avant-plan à un gris moyen (no hex 767676) sur fond blanc, ce qui satisfait tout juste à l’exigence minimale de rapport de contraste de 4,5:1.

Voir le HTML
<div>
   <label for="search">Recherche de cours</label>  
   <input type="text" name="search" id="search" placeholder="e.g., cours sur l’accessibilité">
</div>
<div>
   <label for="fname">Prénom</label>  
   <input type="text" name="fname" id="fname">
</div>
<div>
   <label for="lname">Nom de famille</label>  
   <input type="text" name="lname" id="lname">
</div>
<div>
   <label for="email">Courriel</label>  
   <input type="text" name="email" id="email" placeholder="jane.doe@gmail.com"> 
</div>
Voir le CSS
::-webkit-input-placeholder { 
   color: #767676 !important; 
   opacity: 1;
}
:-moz-placeholder { 
   /* Firefox 18- */ 
   color: #767676  !important;
   opacity: 1;
}
::-moz-placeholder {  
   /* Firefox 19+ */ 
   color: #767676 !important;
   opacity: 1;
}
:-ms-input-placeholder { 
   color: #767676  !important; 
   opacity: 1;
}

Les instructions relatives aux groupes

En "mode focus", lors de la tabulation dans le formulaire, les utilisateurs de lecteurs d'écran mettent le focus sur les contrôles de formulaire et entendent leurs étiquettes et descriptions. Le texte d'un élément non focalisable n'est pas pris en compte, sauf s'il est associé par programme à un contrôle de formulaire en tant qu'étiquette ou description.

 Bon exemple : Instructions de groupe dans une <legend>

Dans cet exemple, le mot « Requis » est défini dans la <legend> pour indiquer que tout ce qui se trouve dans le champ correspondant est requis. Selon la configuration, certains lecteurs d’écran lisent la légende avec chaque élément de forme, une fois ou, rarement, pas du tout. Gardez les légendes courtes et explicites.

Renseignements d’ouverture de session (Requis)
Voir le HTML
<fieldset>
   <legend class="required"> 
       Renseignements d’ouverture de session (Requis)
   </legend>
   <label for="username" class="required">Nom d’utilisateur</label>
   <input type="text" id="username" required autocomplete="username">
   
   <label for="password2" class="required">Mot de passe</label>
   <input type="password" id="password2" required autcomplete="current-password">
   
   <label for="email" class="required">Courriel</label>
   <input type="email" id="email" required autcomplete="email">
   
   <label for="phone" class="required">Téléphone</label>
   <input type="tel" id="phone" required auto-complete="tel-national">
</fieldset>
Voir le CSS
label.required:before, 
legend.required:before {
   content: "* ";
   margin-left: -0.665em;
   color: #d3080c;
   font-weight: 700;
}

  Mauvais exemple : Instructions dans un paragraphe non associé à un contrôle

Lorsque les instructions se trouvent dans un élément <p> non associé via aria-describedby, elles sont facilement manquées par les utilisateurs qui naviguent dans le formulaire en "mode formulaire" du lecteur d'écran.

Créer un compte d’utilisateur

Les mots de passe doivent correspondre.

Voir le HTML
<fieldset>
   <legend> 
   Créer un compte d’utilisateur
   </legend>
   <p>
      <label for="username">Nom d’utilisateur</label>
      <input type="text" id="username">
   </p>
   <p>Les mots de passe doivent correspondre.</p>
   <p>
      <label for="password3">Mot de passe</label>
      <input type="password" id="password3">
   </p>
   <p>
      <label for="retype">Retapez votre mot de passe</label>
      <input type="password" id="retype">
   </p>
   <p>
      <label for="email">Courriel</label>
      <input type="email" id="email">
   </p>
   <p>
      <label for="phone">Téléphone<label>;j
      <input type="tel" id="phone">
   </p>
</fieldset>

 Bon exemple : Instructions partagées associées à plusieurs champs de formulaire

Dans certaines situations, les instructions partagées peuvent être associées à plusieurs champs de formulaire.

Créer un compte d’utilisateur

Les champs Nom d'utilisateur et Mot de passe ne doivent PAS contenir de caractères spéciaux.

Voir le HTML
<fieldset>
   <legend>Créer un compte d’utilisateur</legend>
   <p>
   Les champs Nom d'utilisateur et Mot de passe <span id="specialchar">ne doivent PAS contenir de caractères spéciaux.</span>
   </p>
   <p>
      <label for="username">Nom d’utilisateur</label>
      <input type="text" id="username" aria-describedby="specialchar">
   </p>
   <p>
      <label for="password4">Mot de passe</label>
      <input type="password" id="password4" aria-describedby="specialchar">
   </p>
   <p>
      <label for="email">Courriel</label>
      <input type="email" id="email">
   </p>
   <p>
      <label for="phone">Téléphone</label>
      <input type="tel" id="phone">
   </p>
</fieldset>

 Bon exemple : Fournir des instructions en texte clair avant le formulaire

Dans cet exemple, les instructions générales du formulaire précèdent la balise d’ouverture <form>, où les utilisateurs du lecteur d’écran peuvent facilement y accéder. Si les instructions en texte clair se trouvaient à l’intérieur de l’élément <form>, les utilisateurs pourraient facilement les manquer puisque la navigation à l’intérieur d’un formulaire se limite aux éléments faciles à cibler (aussi appelés « mode formulaires »).

Choisissez les comptes source et destination ci-dessous pour effectuer votre virement de fonds:

Virer des fonds

HTML

<p>Choisissez les comptes source et destination ci-dessous pour effectuer votre virement de fonds:</p> 
<form action="/action.php" method="get">[…]</form>

Ressources WCAG connexes

Ressources WCAG connexes

Critères de succès

Techniques

Haut de la page