Правильное значение для отключенного атрибута

Какое правильное значение для атрибута disabled для текстового поля или текстового поля?

Я видел следующее:

<input type="text" disabled />
<input type="text" disabled="disabled" />
<input type="text" disabled="true" />

Ответ 1

  • Для XHTML <input type="text" disabled="disabled" /> является допустимой разметкой.
  • Для HTML5 <input type="text" disabled /> действителен и используется W3C на своих образцах.
  • Фактически, оба способа работают во всех основных браузерах.

Ответ 2

Спецификация HTML5:

http://www.w3.org/TR/html5/forms.html#enabling-and-disabling-form-controls:-the-disabled-attribute:

Проверенный атрибут контента является логическим атрибутом

http://www.w3.org/TR/html5/infrastructure.html#boolean-attributes:

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

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

Заключение

Ниже приведены действительные, эквивалентные и истинные:

<input type="text" disabled />
<input type="text" disabled="" />
<input type="text" disabled="disabled" />
<input type="text" disabled="DiSaBlEd" />

Ниже приведены недействительные:

<input type="text" disabled="0" />
<input type="text" disabled="1" />
<input type="text" disabled="false" />
<input type="text" disabled="true" />

Отсутствие атрибута является единственным допустимым синтаксисом для false:

<input type="text" />

Рекомендация

Если вы хотите написать действительный XHTML, используйте disabled="disabled", так как <input disabled> является недопустимым, а другие альтернативы менее читабельны. Иначе просто используйте <input disabled>, поскольку он короче.

Ответ 3

Я просто попробовал все это, и для IE11 единственное, что работает, отключено = "true". Значения отключенного или отсутствующего значения не работали. На самом деле, jsp получил ошибку, равную для всех полей, поэтому мне пришлось указать disabled = "true", чтобы это работало.

Ответ 4

В HTML5 нет правильного значения, все основные браузеры действительно не заботятся о том, что такое атрибут, они просто проверяют, существует ли атрибут, чтобы элемент был отключен.