2013-07-06 3 views
3

Puis-je avoir deux étiquettes avec la même valeur for? Exemple:Est-ce que l'attribut <label> doit être unique?

<label for="foo">Outer label</label> 
<div class="foo-bar"> 
    <input type="checkbox" id="foo" /> 
    <label for="foo">Inner label</label> 
</div> 
+0

En tant que sidenote vous pouvez l'éviter en le mettant à l'intérieur. – Knu

Répondre

7

Le lien attribut for un contrôle à un input, il y a, pour autant que je sache, aucune limite au nombre d'éléments qui peuvent créer un lien vers un input, tant que le id de cette input (ou textarea, select, etc.) est unique.

Par exemple, dans la démo suivante les deux élémentslabel déclenchent le changement (cocher/décocher) de l'élément case input:

<label for="foo">Outer label</label> 
<div class="foo-bar"> 
    <input type="checkbox" type="checkbox" name="test" id="foo" /> 
    <label for="foo">Inner label</label> 
</div> 

JS Fiddle demo. Cela peut être utile pour ajouter des messages d'erreur (post-validation, par exemple) qui explicitement lient ou identifient l'élément dans lequel il y a une erreur, sans remplacer/remplacer le label préexistant pour cet élément. Malheureusement il y a, autant que j'ai encore trouvé, aucune référence ou documentation qui permet explicitement un input (ou un élément similaire) lié à un seul contrôle; mais l'entrée pour <label> de » MDN fait état que:

L'ID d'un élément lié à la forme marquable dans le même document que l'élément d'étiquette. Le premier élément de ce type dans le document avec un ID correspondant à la valeur de l'attribut for est le contrôle intitulé pour cet élément d'étiquette.

+0

'autant que je sache - référence s'il vous plaît? – mreq

+3

Il n'y a pas de référence explicite pour dire qu'un seul élément doit être lié - à un seul attribut 'for' de' label' (ou j'aurais délibérément * cité * cette référence pour compléter la réponse). Le * manque * d'une restriction explicite, cependant, est ce qui me fait croire que c'est valide. Il y a, par exemple, des restrictions explicites sur les 'id's en double, mais il n'en existe pas pour l'attribut' for' d'une 'label'. –

+1

En outre, il convient de noter que [éléments labelables] (http://www.w3.org/html/wg/drafts/html/master/forms.html#category-label), tels que 'input',' les éléments button' et 'select', l'attribut IDL de hava a [' labels'] (http://www.w3.org/html/wg/drafts/html/master/forms.html#dom-lfe-labels) une propriété 'labels' dans la terminologie commune), qui est une liste de nœuds de tous les éléments qui sont les étiquettes de cet élément. – Alohci

Questions connexes