Petite question accessibilité les amis. Mains sur les buzzers !
Selon-vous, il vaut mieux pré-remplir les champs textes ? Et de quelle manière ?
Sans rien de particulier (mais un intitulé adapté)
HTML
<p>
<label for="courriel">Courriel</label>
<input type="text" id="courriel" name="courriel" />
</p>
Avec une aide à la saisie
HTML
<p>
<label for="courriel">Courriel</label>
<input type="text" id="courriel" name="courriel" value="Votre courriel" />
</p>
Avec un véritable exemple
HTML
<p>
<label for="courriel">Courriel</label>
<input type="text" id="courriel" name="courriel" value="courriel@exemple.com" />
</p>
Avec une sur-couche JS et l’utilisation du title
(ici en jQuery)
HTML
<p>
<label for="courriel">Courriel</label>
<input class="exemple" type="text" id="courriel" name="courriel" title="courriel@exemple.com" />
</p>
JS
$("input.exemple").each(function(){
$(this).addClass("ex").val($(this).attr("title"));
$(this).focus(function(){
if($(this).val()==$(this).attr("title"))
$(this).removeClass("ex").val("");
});
$(this).blur(function(){
if($(this).val()=="")
$(this).addClass("ex").val($(this).attr("title"));
});
});
CSS
.ex
{
color:#DDD;
background-color:inherit;
}
J’utilise actuellement la dernière technique, qui me semble se dégrader proprement sans le support JS.
15 commentaires ↓
J’utilisais un préremplissage de temps à autre (notamment pour l’email). Maintenant j’ai pris l’habiture de ne plus rien remplir lorsqu’il s’agit de formulaires de contact.
En revanche pour les champs de texte de recherche, j’ai tendance à mettre des exemples (« pantalon, tshirt, … » lorsqu’il s’agit d’une boutique de fringue par exemple).
Quand le champ est classique je troue qu’il ne vaut rien mettre (nom, prénom„ etc.).
Pour un numéro de téléphone par exemple, soit on impose une syntaxe particulière et on l’affichage à mon avis dans le label (ou à coté) soit on autorise toute sorte de syntaxe valide Du coup as besoin de mettre quelque chose dans le champ de texte.
Si on y met quelque chose le mieux est de le faire en JavaScript. En effet si on a désactivé JavaScript ou si on le met en dur ça fais chiez plus qu’autre chose. Ce qui est bien c’est un clic dans le champ et tout disparaît pur qu’on y mette notre texte. Mais pour faire ça, le navigateur devrait le gérer par défaut, Webkit le fait via -webkit-input-placeholder : http://hanblog.info/blog/post/2008/10/13/La-semaine-de-WebKit-5
Utiliser l’attribut title pour ajouter de l’information supplémentaire, ça me paraît une chouette idée.
Tant que l’utilisateur n’a pas à effacer la valeur par défaut pour mettre la sienne, je n’y vois pas de problème.
Rouge !
(c’est à cause de « mains sur les buzzers »)
(tu veux une vraie réponse maintenant ?)
Ça dépend.
Pour une adresse mail, vous@exemple.com est parlant et se vire avec un bout de JS, effectivement.
Pour le reste, garder un champ vide est moins déstabilisant. Les gens, quand ils cliquent sur un truc, et qu’il disparaît, ça leur fait peur. (c’est mon expérience d’observateur des usages, pas ma casquette accessibilité, attention).
La réponse officielle des WCAG1, de tête, c’était : mettre une value tant que les clients ne sauront pas faire l’association label/champ automatiquement. Or maintenant ils savent. Donc walou.
Wouhou ! On me cite !
Bah la meilleure solution me semble être utilisé l’attribut
placeholder
de HTML5 . Et donc son quasi-équivalent en Javascript là où ce n’est pas disponible (c’est à dire dans les moteurs moins bien que WebKit 😉 )En plus, scool HTML5 décrit ce qu’il est cool de mettre en dedans du champ.
Pour le côté « Oh ça disparait, j’ai peur » des utilisateurs, l’utilisation d’une couleur un peu plus fade (comme le fait placeholder, comme le font les champs recherche de nos logiciels classiques) est assez commune et donc moins anxiogène.
(j’ai le droit à des points bonus pour avoir placé ce dernier mot ?)
Par une coïncidence troublante, je suis actuellement en train de monter le formulaire de contact de mon portfolio…
Je vais donc injecter via JS mon title dans chaque champ (laissé vide sans JS donc), ça a l’air de contenter tout le monde. Le coup de la couleur plus fade me plaît, je bidouillerai ça sans doute plus tard (passske là je prends du retaaaaaard).
Ca fait plaisir de revoir un peu d’activité par ici ! Ca y est ? Paris-web 2008 a fini de régner sur les blogs des geeks ? =D
Ah oui j’oubliais, le code JS a l’air bien adapté (ne vide pas le champ à chaque focus, remet l’indice que si le champ est vide). Il lui manquerait juste un ajout/enlevage de classe. Ceci pour donner la police fade (ou tout autre changement) à l’indice. Je vous invite à tester placeholder (qui marche dans Safari 3.2 et Chrome) pour mieux comprendre ce que j’explique.
Rik,
Mis à jour : merci pour l’idée.
@Rik : pas mal, anxiogène.
(ceci est ma contribution hautement constructive au débat, mais je sais que Vincent validera mon commentaire parce que quand même, on ne peut pas négliger les joueurs de Scrabble® qui nous lisent)
Pour Unobtrusivelib (un script regroupant des comportements simples et souvent rencontrés), j’utilise très classiquement l’attribut
value
, ce qui est effectivement moyennement intéressant d’un point de vue utilisation lorsque Javascript n’est pas activé, puisqu’il faut l’effacer « à la main » si on utilise la souris pour cibler le champ.D’un point de vue sémantique, l’attribut
title
semble plus intéressant, mais l’information est moins visible pour les navigateurs graphiques : il faut survoler un certain temps l’élément pour voir apparaître la valeur detitle
.Corrigez-moi si je me trompe, mais en navigant à l’aide du clavier (sans JS, et sans aide vocale), l’information n’est plus du tout accessible avec un
title
, tandis qu’avec unvalue
, le contenu est entièrement sélectionné lorsque le champ prend le focus. Dans ce cas, l’attributvalue
est clairement plus intéressant, puisqu’une simple pression sur une touche permet de remplacer la valeur pré-remplie par une autre.Même chose pour les interfaces tactiles, sur lesquelles le survol n’existe évidemment pas.
Une des solutions pourrait être d’utiliser l’attribut
placeholder
combiné à l’attributtitle
en attendant, et de tester le support deplaceholder
pour appliquer ou non le script à l’élément. Cette méthode ne résout pas le problème de visibilité pour les navigateurs ne supportant pas encore l’attributplaceholder
, c’est à dire tous les navigateurs en version stable.Je crois que je vais rester au bon vieux
value
pour le moment, de manière à éviter tout comportement anxiogène.Ce retrouver avec un champs pré-remplis qui ne s’efface pas … c’est un peu frustrant …
Ton dernier exemple en jQuery est très utile pour la majorité des utilisateurs.
Néanmoins, les utilisateurs sans JS, n’aurons pas d’exemple vraiment visible… L’attribut title c’est bien joli, mais quel utilisateur lambda va attendre 2sec pour voir apparaitre une petite bulle jaune avec un exemple à peine lisible ? Sans parler des utilisateurs de lecteurs d’écrans qui n’auront pas configuré la lecture de ces tooltips …
Perso je prévois des exemples derrières les inputs, avec la balise em voir kbd … et on peut toujours envisager de les manipuler en DOM…
LukeW a écrit un joli pdf reprennant de bonnes et mauvaises pratiques pour la structure de formulaires : http://www.lukew.com/ff/entry.asp?502
Pas bête le coup du
kbd
tiens.Il ne vaut mieux pas pré-remplir un champs texte !
Pour plusieurs raisons : - un champs rempli donne implicitement comme information à notre cerveau que l’endroit où il doit faire saisir aux doigts qqc est déjà rempli ! pas besoin de le faire … - un champs rempli se vide au moment de la prise de contrôle : ce qui est une erreur ergonomique car cela force à mémoriser le champs (sur un fraction de secondes où sur qq minutes : le concepteur du site ne peut pas savoir comment l’utilisateur va utiliser l’interface dans le temps !) - un champs saisi attire moins l’attention de l’utilisateur : il est déjà rempli car l’internaute sait aujourd’hui qu’un temps de saisi est rectangulaire et vide (le champs attend un texte : cf mon 1er point)
Toutes ces raisons sont liées à l’affordance des champs de saisie (merci Amélie Boucher, à sa conférence ParisWeb et à son livre)
Un champs de saisie dit à notre cerveau « saisissez ici qqc ». Pré-saisir interfère donc sur cette interaction. Et sur le plan de l’accessibilité, mieux vaut mettre l’intitulé en dehors du champs !
Ce que j’ai fait une fois, c’est de, plutôt que supprimer le texte quand on entre dans la case, sélectionner le texte. Ainsi, à la première frappe d’une touche, le texte précédent est effacé.
Après, je pense que les personnes pas habituées vont avoir tendance à effacer le texte « à la main » (genre le resélectionner, ou bien aller à la fin et faire backspace plein de fois, etc.). Mais j’ai trouvé néanmoins que c’était la meilleure solution si on voulait préremplir.
[…] déterre ce vieux billet sur les champs textes car il était plein de bonnes idées dans les […]
Laisser un commentaire