2013-07-06 2 views
3

Могу ли я иметь две метки с одинаковым значением for? Пример:Действительно ли <label> атрибут должен быть уникальным?

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

В качестве опоры вы можете избежать этого, поместив его внутрь. – Knu

ответ

7

Атрибут for связывает управление с input, есть, насколько я знаю, нет ограничений на количество элементов, которые не могут ссылаться на один input, так долго, как id того input (или textarea, select и т. д.) является уникальным.

Например, в следующем демо обаlabel элементы будут вызывать изменение (Включение/выключение) элемента Флажок 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.

Это может быть полезно для добавления сообщений об ошибках (например, после проверки), которые явно связывают или идентифицируют элемент, в котором есть ошибка, без переопределения/замены ранее существовавшего label для этого элемента.

К сожалению, есть, поскольку у меня есть , но найдено, без ссылки или документации, которая явно позволяет привязать input (или аналогичный элемент) к одному элементу управления; Однако запись MDN «s для <label> делает состояние, в котором:

Идентификатор в виде labelable связанных элемента в том же самом документе в качестве элемента этикетки. Первым таким элементом в документе с идентификатором, соответствующим значению атрибута for, является элемент управления с меткой для этого элемента метки.

+0

'насколько я знаю' - обратитесь пожалуйста? – mreq

+3

Нет никакой явной ссылки, чтобы сказать, что только один элемент должен быть связан только одним атрибутом 'to' для' label' (или я бы преднамеренно * процитировал * эту ссылку для завершения ответа). Тем не менее, отсутствие * явного ограничения - это то, что заставляет меня поверить, что оно действительно. Например, существуют явные ограничения на дубликаты 'id', но не существует для атрибута 'for' для' label'. –

+1

Кроме того, следует отметить, что [маркируемые элементы] (http://www.w3.org/html/wg/drafts/html/master/forms.html#category-label), такие как 'input',' button' и 'select', hava a [' labels'] (http://www.w3.org/html/wg/drafts/html/master/forms.html#dom-lfe-labels) атрибут IDL (т. е. свойство 'labels' в общей терминологии), которое представляет собой список узлов всех элементов, которые являются метками этого элемента. – Alohci

Смежные вопросы