2017-01-26 1 views
0

J'ai une description supplémentaire label et un champ input.Comment baliser sémantiquement des informations supplémentaires dans un champ d'entrée et d'étiquette

label and input with description

Je suis un peu incertain si la description supplémentaire appartient au champ d'étiquette enveloppé dans une période comme celle-ci:

<label for="phone"> 
    Telephone 
    <span>For the delivery</span> 
</label> 
<input type="text" name="phone"> 

De cette façon, la description est cliquable. Mais je ne suis pas sûr si c'est l'approche correcte avec tout à l'esprit et le balisage sémantique.

Les informations supplémentaires appartiennent-elles à l'étiquette ou doivent-elles être séparées et comment doivent-elles être formatées?

+3

@aardrian a déjà répondu à votre question. Mais en parlant d'accessibilité, faites attention au contraste du texte. – Adam

Répondre

4

D'abord, j'Assigner toujours le <label> au id du champ au lieu de son name (particulièrement important pour les boutons radio et cases à cocher):

<label for="phone"> 
Telephone 
<span>For the delivery</span> 
</label> 
<input type="text" name="phone" id="phone"> 

Votre approche n'est pas mal. Si vous êtes préoccupé par verbosité pour les lecteurs d'écran (peut-être à la suite des tests utilisateurs), vous pouvez mélangez qu'un peu et utilisez aria-describedby:

<label for="phone"> 
Telephone 
</label> 
<span id="phoneAddl">For the delivery</span> 
<input type="text" name="phone" id="phone" aria-describedby="phoneAddl"> 

aria-describedby il associe toujours avec le terrain, mais annonce après le champ et avec une brève pause. Il n'a aucun effet sur autre chose qu'un lecteur d'écran.

Mais à votre point sur la plus grande zone de clic, et étant donné que sémantiquement il est bon de le laisser dans le <label>, je voudrais juste le laisser là comme dans votre exemple. Cela signifie également que vous ne comptez pas sur ARIA pour faire le travail d'un élément natif (bien que ce ne soit pas tout à fait faire la même chose).

+1

Je préférerais aussi la première solution car le "pour la livraison" peut être une information importante qui devrait être parlée sans délai. – Adam

+1

Dans la première solution, testez-le avec quelques lecteurs d'écran pour entendre le son. Il pourrait dire "téléphone pour la livraison" comme une phrase continue. Vous pourriez être d'accord avec la façon dont cela semble mais visuellement, le "pour la livraison" semble être une phrase entre parenthèses avec moins d'emphase (puisque c'est du texte gris au lieu de noir). Vous pourriez vouloir qu'il soit lu comme une phrase entre parenthèses avec une brève pause après "téléphone" et ensuite "pour la livraison". Aria-describedby va le faire, comme l'a dit @aardrian, mais j'aime aussi la plus grande cible de clic en l'ayant comme une grande étiquette. (suite ...) – slugolicious

+1

(suite ...) Vous pouvez tromper le lecteur d'écran en ajoutant une virgule dans votre texte. Cependant, vous ne voulez pas vraiment que la virgule soit affichée, donc cela devrait être dans une étiquette aria. ' Pour la livraison'. Mais si vous arrivez à ce point, vous pourriez choisir la solution. Vous avez probablement d'autres problèmes plus importants. Je voulais juste souligner le truc :-) – slugolicious