Validation accessible des formulaires côté client avec HTML5, WAI-ARIA et le plugin jQuery Validation

Paul J. Adam

By Paul J. Adam

25 mai 2012

Des navigateurs obsolètes ? Des technologies d'assistance obsolètes ? JavaScript à la rescousse ! Dans ce dernier volet de notre série consacrée à la validation accessible des formulaires et à l'amélioration de l'ergonomie, nous allons intégrer le plugin jQuery Validation afin de garantir que notre formulaire soit accessible à tous sur tous les appareils prenant en charge JavaScript, y compris le redoutable IE6.

Formulaire de démonstration avec validation HTML5, WAI-ARIA et jQuery (paramètres par défaut)

Formulaire de démonstration avec validation HTML5, WAI-ARIA et jQuery (paramètres modifiés)

Le HTML5 et ARIA ont leurs limites, mais pas JavaScript !

Certes, JavaScript présente certaines limites, mais en réalité, il n’y en a aucune si vous le codez en tenant compte de l’accessibilité. Il fonctionne sur pratiquement tous les navigateurs et appareils mobiles. Personne ne désactive vraiment JavaScript, à moins d’être un passionné de sécurité. Si vous souhaitez gérer une situation où JavaScript est désactivé et protéger votre base de données contre les attaques par injection SQL, vous devez également valider les données saisies dans les formulaires côté serveur. La validation côté serveur peut être considérée comme le niveau le plus bas de la validation accessible des formulaires et fonctionnera dans n’importe quel navigateur, y compris sur les téléphones basiques.

Ajout du plugin de validation jQuery

jQuery est le framework JavaScript dominant sur le Web et peut être considéré comme le grand gagnant de la « guerre des frameworks JS » de ces dernières années. La devise de jQuery est « Écrire moins, faire plus ». Minimalisme et accessibilité font très bon ménage !

It’s very simple to add jQuery Validation to any HTML form. Link to jQuery, we’re using a content delivery network here so we don’t have to download the JavaScript file. Then link to the validation plugin. Then tell jQuery to run the validation plugin on your form with the id attribute you want to validate. This will happen after the document is finished loading. Add this code to the <head>.

Le plugin détecte nos champs de saisie grâce à l'attribut « required » de HTML5 et, par défaut, effectue sa propre validation via JavaScript au lieu d'utiliser HTML5. Cela pose problème. Nous souhaitons que la validation HTML5 soit effectuée dans les navigateurs qui la prennent en charge, et que seule la validation via JavaScript soit utilisée dans ceux qui ne la prennent pas en charge.

Paramètres par défaut de la validation jQuery

There are some issues with the default settings. It stops the native HTML5 validation. The other big accessibility issue is that by default the error messages are placed in a second <label>. So there are two labels pointing to one input. This is a problem for some screen readers. VoiceOver will not announce the second label when the user tabs through the form. Steve Faulkner (@stevefaulkner) wrote a recent blog post titled, Notes on applying multiple labels for a control using the label element, and created a test case, multiple labels for a control using the label element, where you can see where multiple labels fail in certain AT. aria-labelled by is a better solution than using multiple labels.

Nous avons donc deux problèmes pour l'instant avec les paramètres par défaut. La validation HTML5 est désactivée et deux étiquettes renvoient vers un seul champ de saisie. Le troisième problème est que le message d'erreur s'affiche sous le champ de saisie. Nous devons donc le déplacer vers l'étiquette d'origine et utiliser du CSS pour le positionner où nous le souhaitons.

Personnalisation de la validation jQuery

Options de la méthode validate()

Il existe de nombreuses options permettant de modifier les paramètres par défaut du plugin de validation. Nous souhaitons modifier les paramètres `errorPlacement` et `errorElement`. Nous souhaitons également supprimer l'attribut `novalidate` qui est appliqué par défaut à notre formulaire.

Change the code in the <head> to this:

To change the errorPlacement I found some code on Stack Overflow to select the associated label element of an input field and append the error message to that. Then I changed the errorElement to be an <em> rather than another <label>. And then used jQuery to select the form on the page and remove the novalidate attribute.

Voilà exactement le comportement souhaité. Les navigateurs modernes comme Chrome et Firefox effectueront d'abord une validation HTML5, tandis que les autres navigateurs offrant une prise en charge moins étendue du HTML5, comme Safari sur Mac et iOS, utiliseront jQuery Validation.

Ça fonctionne même sous IE6 ! Cliquez sur les deux liens de démonstration dans différents navigateurs pour constater les différences.

IE6 : la kryptonite des développeurs web. Le développeur web, c'est Superman ; mais dès qu'on lui applique IE6, sa kryptonite, il se transforme en un type vraiment ringard, avec des lunettes et une fausse chemise de smoking, après avoir dû s'occuper de la compatibilité avec IE6.

Formulaire de démonstration avec validation HTML5, WAI-ARIA et jQuery (paramètres par défaut)

Formulaire de démonstration avec validation HTML5, WAI-ARIA et jQuery (paramètres modifiés)

Les formulaires peuvent être fastidieux et difficiles d'accès !

Un type en colère, les mains en l'air, qui pleure – blog sur l'accessibilité

Changons la donne en matière de saisie de données sur le Web !

Ces trois articles s'inspirent d'une conférence que j'ai donnée lors du salon CSUN 2012. J'espère que cette série vous a plu !

Liens vers les trois articles de cette série :

  1. Validation accessible des formulaires côté client avec HTML5
  2. Validation accessible des formulaires côté client avec HTML5 et WAI-ARIA
  3. Validation accessible des formulaires côté client avec HTML5, WAI-ARIA et le plugin jQuery Validation

Des commentaires ? Des questions ?

Alors, que pensez-vous de ces trois niveaux d'accessibilité que nous avons ajoutés à notre formulaire ? Lors de ma présentation à AccessU 2012, quelqu'un m'a fait remarquer que cela semblait représenter beaucoup de travail supplémentaire pour rendre un formulaire accessible. Je pense que cela en vaut vraiment la peine pour créer un formulaire très convivial et universellement accessible sur tous les appareils prenant en charge l'accessibilité.

N'hésite pas à me faire part de tes suggestions d'amélioration ou à me signaler les éventuelles erreurs que tu pourrais repérer.

Paul J. Adam

Paul J. Adam

Paul J. Adam est un ancien « évangéliste de l'accessibilité » chez Deque Systems. Il se consacre principalement à l'accessibilité mobile et à l'accessibilité du Web moderne, et possède une expertise dans les domaines suivants : Web mobile, applications natives iOS et Android, applications hybrides, conception Web adaptative, HTML5, JavaScript, WAI-ARIA, WCAG 2.0 et techniques modernes de développement Web. Paul est développeur Apple certifié depuis 2011 et consacre son temps libre à la création d'applications iOS et à l'apprentissage du développement JavaScript moderne.

Recevez les articles de blog directement dans votre boîte mail

Pas de bavardages inutiles, mais des informations concrètes sur l'accessibilité, fournies par des experts qualifiés.

Vous acceptez que Deque , utilise et partage des informations conformément à Dequedéclaration de confidentialité. Vous pouvez modifier votre consentement à tout moment en nous contactant.

En savoir plus sur ce sujet

Test your custom elements and trust the results with Axe-core’s support for ElementInternals

Wilco Fiers 400 x 400 1 300 x 300
August 27, 2026 By Wilco Fiers

If you're a large enterprise organization with accessibility issues resulting from interoperability challenges, moving to ElementInternals is a savvy move. You can standardize, and safely test. And, with Axe-core now supporting ElementInternals, you can test those components and trust the results.

Lire l'article
A testing flow, depicting a single custom button scanned by Axe-core for React, Angular or Vue frameworks

Deque and Microsoft: Two decades of shaping the future of accessibility

cropped preety kumar400x400 300x300 1 1.jpg
August 25, 2026 By Preety Kumar

What started nearly two decades ago as conversations between two people passionate about improving accessibility across Microsoft's digital experiences has grown into a lasting partnership built on shared learning, mutual respect, and a common belief that accessibility should be built into every stage of software development.

Lire l'article
Preety Kumar and Jenny Lay-Flurrie conducting an interview, with the Seattle skyline in the background.