Действительно ли мне нужно удалить второе скрытое поле формы из метки, чтобы проверить мой HTML? - PullRequest
3 голосов
/ 23 апреля 2011

У нас есть следующий код, в котором мы получаем ошибки в валидаторе w3c для «Любой входной потомок элемента метки с атрибутом for должен иметь значение идентификатора, соответствующее значению атрибута».и «Элемент label может содержать не более одного элемента input, button, select, textarea или keygen Потомок».Является ли это чем-то, что должно быть просто проигнорировано валидатором (как это, по-видимому, правильно) или его следует изменить, чтобы успокоить w3c?Обратите внимание, что это html5 doctype.

<fieldset>
  <label for="user_is_subscribed">
    <input type="hidden" value="0" name="user[is_subscribed]">
    <input type="checkbox" value="1" name="user[is_subscribed]" id="user_is_subscribed">
    Newsletter Signup
  </label>
  <span class="checkLabel">We will never spam or give away your information</span>
</fieldset>

Спасибо заранее!

Ответы [ 2 ]

8 голосов
/ 23 апреля 2011

Метки должны содержать не более одного элемента ввода. Переместите скрытый ввод из метки. Кроме того, если вход является потомком метки, атрибут for является излишним.

<fieldset>
  <input type="hidden" value="0" name="user[is_subscribed]">
  <label>
    <input type="checkbox" value="1" name="user[is_subscribed]" id="user_is_subscribed">
    Newsletter Signup
  </label>
  <span class="checkLabel">We will never spam or give away your information</span>
</fieldset>
7 голосов
/ 23 апреля 2011

Это то, что должно быть просто проигнорировано валидатором

Нет

(как это, на первый взгляд, правильно)

Это не

или его следует изменить

Да

, чтобы успокоить w3c?

Нет.Его следует изменить, поскольку он неправильный, и браузеры должны исправить ошибки, чтобы выяснить, с каким элементом связана метка.

Метка не обозначает скрытый ввод, переместите его в другое место.

...