Атрибуты должны иметь значение, даже для атрибутов, чье простое присутствие сигнализирует о том, что что-то должно быть сделано. disabled="false"все равно отключил бы элемент, потому что это ПРИСУТСТВИЕ disabledвызывает отключение, а не значение атрибута.
Наличие логического атрибута в элементе представляет истинное значение, а отсутствие атрибута представляет ложное значение.
Если атрибут присутствует, его значение должно быть либо пустой строкой, либо значением, которое является ASCII-регистронезависимым совпадением с каноническим именем атрибута, без начальных или конечных пробелов.
Вывод :
Следующее является действительным, эквивалентным и верным :
Отсутствие атрибута является единственным допустимым синтаксисом для false :
<inputtype="text"/>
Рекомендация
Если вы хотите написать действительный XHTML, используйте disabled="disabled", поскольку <input disabled>он недействителен, а другие альтернативы менее читабельны. Остальное, просто используйте <input disabled>как короче.
Примечание. Если вы используете AngularJS и вам нужно привязать отключенное состояние к переменной, вы можете использовать ng-disabledвместо этого. Подобно другим атрибутам, подобным этому, как правило, у них есть интеллектуальный ng-*аналог
jakub.g
5
disabled={true}работает в JSX-кодеactJ, но я уверен, что он будет перенесен только в один из допустимых / разрешенных HTML5-форматов
RBT
1
Я только что попробовал все это, и для IE11 единственное, что, кажется, работает, отключено = "true". Значения отключено или не указано значение не работает. На самом деле, jsp получил ошибку, равную требуется для всех полей, поэтому я должен был указать disabled = "true", чтобы это работало.
Вопрос OP был о HTML (то есть средствах управления на стороне клиента). Вы смотрите на серверные элементы управления; у них разные соглашения. Вы заметите разницу, если будете проверять вывод HTML своей JSP. Если у вас все еще есть сомнения, попробуйте эту скрипку в IE11.
Рууд Хелдерман,
Я видел то же самое на стороне клиента в IE 11. IE 11 заставляет что-то существовать, поэтому просто установка отключена приводит к отключению = ""
Robert Achmann
1
В HTML5 нет правильного значения, все основные браузеры на самом деле не заботятся о том, что это за атрибут, они просто проверяют, существует ли атрибут, поэтому элемент отключен.
disabled="false"
все равно отключил бы элемент, потому что это ПРИСУТСТВИЕdisabled
вызывает отключение, а не значение атрибута.Ответы:
<input type="text" disabled="disabled" />
- допустимая разметка.<input type="text" disabled />
действителен и используется W3C на своих примерах.источник
HTML5 spec :
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 :
Вывод :
Следующее является действительным, эквивалентным и верным :
Следующее недействительно :
Отсутствие атрибута является единственным допустимым синтаксисом для false :
Рекомендация
Если вы хотите написать действительный XHTML, используйте
disabled="disabled"
, поскольку<input disabled>
он недействителен, а другие альтернативы менее читабельны. Остальное, просто используйте<input disabled>
как короче.источник
ng-disabled
вместо этого. Подобно другим атрибутам, подобным этому, как правило, у них есть интеллектуальныйng-*
аналогdisabled={true}
работает в JSX-кодеactJ, но я уверен, что он будет перенесен только в один из допустимых / разрешенных HTML5-форматовЯ только что попробовал все это, и для IE11 единственное, что, кажется, работает, отключено = "true". Значения отключено или не указано значение не работает. На самом деле, jsp получил ошибку, равную требуется для всех полей, поэтому я должен был указать disabled = "true", чтобы это работало.
источник
В HTML5 нет правильного значения, все основные браузеры на самом деле не заботятся о том, что это за атрибут, они просто проверяют, существует ли атрибут, поэтому элемент отключен.
источник