Яке правильне значення для відключеного атрибута?


167

Яке правильне значення є disabledатрибутом для текстового поля чи текстової області?

Я бачив таке, що раніше використовувалося:

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

5
Атрибути повинні мати значення навіть для атрибутів, чия наявність лише сигналізує про щось. disabled="false"все одно буде відключений елемент, тому що саме ПРИСТАННЯ disabledвикликає відключення , а не значення атрибута.
Марк Б

Посилання, яке я розмістив як коментар до відповіді js1568, підтверджує / уточнює, що говорить @Marc B: whatwg.org/specs/web-apps/current-work/multipage/…
Джеймс Еллардіс

можливий дублікат stackoverflow.com/questions/1033944/… тому, що обидва є булевими атрибутами (не позначені
прапорами

Відповіді:


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

15
У html5 вхід - це недійсний елемент і не потребує косої коси, що закривається: w3.org/TR/html5/syntax.html#void-elements і w3.org/TR/html5/syntax.html#syntax-start- тег
Даніель

1
@Daniel K. Він не потребує цього, якщо не робити розмітку поліглоту HTML / XML.
Patanjali

108

Специфікація 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" />

Відсутність атрибута - єдиний допустимий синтаксис для помилки :

<input type="text" />

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

Якщо ви дбаєте про те, щоб написати дійсний XHTML, використовуйте disabled="disabled", оскільки <input disabled>він недійсний, а інші альтернативи менш читаються. Інше, просто використовувати, <input disabled>як це коротше.


3
Примітка. Якщо ви використовуєте AngularJS і вам потрібно прив’язати відключений стан до змінної, ви можете використовувати його ng-disabledзамість. Аналогічно з іншими подібними атрибутами, як правило, у них є розумний ng-*аналог
jakub.g

5
disabled={true}працює в JSX-коді reactJs, але я впевнений, що він буде перекладений лише на один з дійсних / дозволених форматів HTML5.
РБТ

1

Я просто спробував усе це, і для IE11 єдине, що, здається, працює - це відключено = "true". Значення вимкнено або не мають значення, що не працювало. Власне, jsp отримав помилку, рівну для всіх полів, тому мені довелося вказати disabled = "true", щоб це працювало.


1
Питання ОП стосувалося HTML (тобто елементів управління на стороні клієнта). Ви дивитесь на серверні елементи керування; вони мають різні умовності. Ви помітите різницю, якщо перевірите вихід HTML у своєму JSP. Якщо у вас все ще виникають сумніви, спробуйте цю загадку в IE11.
Рууд Гельдерман

Я бачив те ж саме на стороні клієнта в IE 11. IE 11 змушує щось існувати, тому просто встановлення вимкнених результатів у відключеному = ""
Роберт Ахман

1

У HTML5 немає правильного значення, всі основні браузери насправді не цікавлять, що таке атрибут, вони просто перевіряють, чи існує атрибут, щоб елемент був відключений.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.