HTML-теги внутри <label> - PullRequest
       4

HTML-теги внутри <label>

53 голосов
/ 16 декабря 2010

У меня есть таблица на странице, которая состоит из флажков в ячейках слева и описаний в ячейках справа. «Описание» содержит заголовки h4 и простой текст. Я хочу сделать все это описание (все внутри <td></td>) меткой.

Итак, каждый ряд выглядит так:

<tr><td><input type="checkbox" name="entiries[]" value="i1" id="i1"></td>
<td><label for="i1">
<h4>Some stuff</h4>more stuff..
<h4>Some stuff</h4>more stuff..
</label>
</td></tr>

Это не работает, однако, текст не действует как метка и не кликабелен. Я использую Firefox 3.6, чтобы проверить это. Если я удаляю теги <h4>, он начинает работать, но это усложняет форматирование. Есть ли что-то в тегах <h*>, которые мешают правильной работе <label>?

Ответы [ 3 ]

51 голосов
/ 16 декабря 2010

Элементы блочного уровня (к которым относится h4) недопустимы внутри встроенных элементов и будут вызывать неопределенное поведение.Вместо этого вы можете использовать span элементы.

28 голосов
/ 16 декабря 2010

Только встроенные элементы (кроме других элементов метки) могут появляться внутри элементов метки.

<!ELEMENT LABEL - - (%inline;)* -(LABEL) -- form field label text -->

- http://www.w3.org/TR/html4/interact/forms.html#h-17.9.1

В любом случае не имеет смысла ставить заголовки там.

15 голосов
/ 16 декабря 2010

Элемент <label> в HTML является встроенным элементом уровня и не может содержать элементы уровня блока.

Это, вероятно, то, что вызывает ваши проблемы. В качестве альтернативы вы можете поместить свои метки в <h4> s:

<tr><td><input type="checkbox" name="entiries[]" value="i1" id="i1"></td>
<td><
<h4><label for="i1">Some stuff</label></h4>more stuff..
<h4><label for="i1">Some stuff</label></h4>more stuff..
</label>
</td></tr>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...