1174 sujets

Accessibilité du Web

Bonjour à tou(te)s,

J'ai une problématique liée à l'accessibilité.

Les contraintes :
l'utilisateur doit renseigner une date de naissance en trois champs (c'est une contrainte métier car le jour de la date n'est pas obligatoire donc pas de date picker ou autre) or la contrainte ergonomique pour inscrire cette partie de formulaire dans le reste de l'écran veut qu'il n'y ait d'affiché qu'un seul libellé "Renseigner sa date de naissance (jj:mm/aaaa) :". Une dernière contrainte pour le challenge, les PO refuse le placeholder pour la raison suivante: Il n'y en a pas sur les autres champs ... no comment.

Solution envisagée :
Placer un <fieldset> et une <legend> reprenant le libellé ci-dessus, et placer les libellés de chaque champ (jour, mois et année) de manière à ce qu'il soit lisible uniquement par les lecteurs écrans en m'appuyant sur cet article http://quentinc.net/contenus-exclusifs-aux-lecteurs-ecran. Je prends soin également d'indiquer le caractère obligatoire/facultatif pour chacun d'eux via l'attribut aria prévu à cet effet. Ce qui me gêne c'est que ces champs sont déjà inscrits dans un fieldset englobant d'autres champs.

Ma question :
Existe-t-il un moyen plus simple de traiter ma problématique en évitant d'imbriquer un fieldset et sa légende dans un autre fieldset contenant également une légende car l'expérience utilisateur sur un lecteur écran risque d'être un peu lourde (lecture des deux légendes suivi du libellé pour chaque champ) ?

Je vous remercie par avance de l’intérêt que vous porterez à ma problématique.
Modifié par KevinSmith (13 Mar 2017 - 11:21)
Hello,

Va pour les fieldsets imbriqués Smiley smile

La vocalisation sera (un peu) longue mais ça reflète la conception du formulaire. En soit ça n'a rien de gênant — au contraire.

L'intitulé en lui-même me semble plus ennuyeux : préciser le verbe « renseigner sa… » est lourd et inutile Smiley sweatdrop

Mais à mon avis les fieldset + legend sont faits pour la problématique que tu décris, il ne sert à rien de chercher à contourner le fonctionnement standard prévu pour un gain de confort somme toute minime.

Qu'en penses-tu ?
Un grand merci pour ta réponse, je pense donc garder cette solution. Je prends le sujet de l'accessibilité très à cœur et je dois avouer que ma curiosité reste un peu sur sa faim Smiley cligne . Je suis toujours en quête d'utilisations pertinentes des attributs aria sur des cas spécifiques comme celui-ci.

Pour le "wording" du libellé ce n'ai malheureusement pas de mon ressort. Je vais cependant sensibiliser les personnes concernées sur le comportement des lecteurs écrans avec la solution apportée afin qu'ils optimisent leurs libellés et légendes en fonction.

Bonne journée.
Modifié par KevinSmith (13 Mar 2017 - 14:11)
Bonjour,

Si la répétition d'un <legend> est parfois très bien appropriée, je trouve qu'elle devient souvent plus pénible qu'autre chose.

Là dans ce cas, entendre:
Veuillez renseigner votre date de naissance, jour
puis
Veuillez renseigner votre date de naissance, mois
puis
Veuillez renseigner votre date de naissance, année

est inutilement pompeux à mon avis. Et ceci n'est pas mieux:

Quelle est votre couleur préférée ? Jaune
Quelle est votre couleur préférée ? Rouge
Quelle est votre couleur préférée ? Bleu
Quelle est votre couleur préférée ? Vert

Je ne discute pas le fait que la solution <fieldset> + <legend> soit celle qui soit, du point de vue de la sémantique, de loin la plus correcte.
Mais pour moi ce n'est pas la meilleure au niveau pratique. Remplir un formulaire nous prend très souvent 2 ou 3 fois plus de temps qu'à une personne bien voyante, alors des intitulés précis et concis sont absolument indispensables pour ne pas encore nous ralentir davantage.

En fait, entendre trois fois "Date de naissance" c'est largement supportable, et dans ce cas garder la solution <fieldset> + <legend> est le choix indiscutable parfait, alors qu'entendre trois fois "Veuillez remplir votre date de naissance dans le champ ci-dessous s'il vous plaît" c'est du supplice inutile.

Il devrait y avoir une option dans les lecteurs d'écran pour ne lire le <legend> qu'au premier champ du <fieldset> atteint, et ne pas le répéter ensuite. Je viens de refouiller dans le setting center de Jaws et ça n'existe pas malheureusement.

En attendant, j'aurais envie de proposer une autre alternative du coup, d'autant plus que tu sembles vouloir tenir à garder l'intitulé à rallonge plutôt que d'opter pour la concision: trois simples <label>, avec:
Premier: "Veuillez indiquer votre date de naissance, jour"
Second: "Mois"
Troisième: "Année"
Ca reste clair sans être trop pompeux, et tu peux cacher les deux derniers labels à la vue des personnes bien voyantes si tu veux.

Une autre possibilité est d'utiliser la'ttribut title, dans ce cas tu aurais:
Un label associé au premier champ: veuillez entrer votre date de naissance
title sur le premier champ: jour
title sur le second champ: mois
title sur le troisième champ: année

Avec un léger bémol pour cette solution: tous les lecteurs d'écran lisent le title en cas d'absence de label associé, mais tous les lecteurs d'écran ne lisent pas forcément label+title quand les deux sont présents (c'est une option qu'on peut paramétrer, par défaut je crois que c'est le plus long des deux qui est lu uniquement tandis que l'autre est ignoré)

## En conclusion
<fieldset> + <legend> est le choix le plus sémantiquement correct, mais étant donné que le contenu du <legend> est répété avant chaque <label> du groupe, il faut prêter particulièrement attention à la concision de celui-ci.
Meilleure solution