Правильное использование атрибута 'disabled' в HTML
Быстрый ответ
Атрибут disabled необходим для того, чтобы сделать HTML-элемент неактивным и недоступным для взаимодействия. Значение этому атрибуту при этом не указывается.
<input type="text" disabled>
Это широко используется для деактивации элементов ввода в формах.

Рассмотрение атрибута disabled
В HTML5: булевы атрибуты
HTML5 поддерживает использование булевых атрибутов, таких как disabled, без задания им значения. Присутствие атрибута воспринимается как true, отсутствие — как false:
<button disabled>Эта кнопка отключена</button>
Специфика XHTML
Стандарт XHTML предъявляет более строгие требования к булевым атрибутам: disabled должен иметь значение disabled:
<input type="text" disabled="disabled">
Поддержка браузерами
Все современные браузеры поддерживают оба варианта использования атрибута disabled, будь то <input disabled> или <input disabled="disabled">.
Чего следует избегать
Не рекомендуется использовать нестандартные значения, такие как true или false. Они могут привести к непредсказуемому поведению элемента:
<!-- Недопустимо использовать -->
<input type="text" disabled="true">
<input type="text" disabled="false">
Такой синтаксис не соответствует спецификациям HTML.
Управление атрибутом disabled через JavaScript
Работа с атрибутом disabled в JavaScript может выполняться с использованием следующих методов:
// Деактивировать элемент
element.disabled = true;
// Активировать элемент
element.disabled = false;
Методы setAttribute и removeAttribute также позволяют манипулировать атрибутами:
// Для установки атрибута disabled
element.setAttribute('disabled', '');
// Для удаления атрибута disabled
element.removeAttribute('disabled');
Более детальные примеры и рекомендации по работе с атрибутом disabled в JavaScript смотрите в документации MDN (ссылка на неё представлена в разделе "Полезные материалы").
Особенности использования атрибута disabled
Совместимость с устаревшими браузерами
При работе с IE11 или другими устаревшими браузерами может потребоваться указание значения true:
<!-- Только для устаревших браузеров -->
<input type="text" disabled="true">
Применение в серверных скриптах
При работе с серверными языками программирования, такими как JSP, где требуется явное указание значений атрибутов, будет корректным следующий синтаксис:
<!-- Пример для серверного скриптинга -->
<input type="text" <%= isDisabled ? "disabled=\"disabled\"" : "" %> >
Соблюдение стандартов доступности
Обеспечьте соблюдение стандартов доступности для ваших форм. Если перед вами стоит такая задача, предложите пользователю альтернативные способы взаимодействия с формой.
Визуализация
Вот каким будет отображение элемента с применением атрибута disabled:
<button disabled="disabled">Не нажимайте на меня! 🚫</button>
И результат выполнения кода:
До: [🟢 Активная Кнопка]
После: [🔴 Неактивная Кнопка]
Символика включения/выключения:
🔲 = [Вкл] (Активно)
🔳 = [Выкл] (Отключено 🔒)
Элемент с атрибутом disabled остаётся отключённым независимо от его значения:
<input type="text" disabled>
Конструкции "Дверь под замком" и "Дверь закрыта" передают один и тот же смысл — доступа нет.
Частные вопросы касательно атрибута disabled
Пользовательские элементы и фреймворки
Пользовательские элементы и фреймворки, такие как Angular, React и Vue, используют атрибут disabled в своих компонентах, принимая во внимание специфику этих библиотек:
// Пример отключения кнопки в React
<button disabled={isButtonDisabled}>Пожалуйста, не нажимайте</button>
Автоматическое тестирование
Автоматизированные тесты могут требовать особых подходов к работе с атрибутом disabled. Учитывайте это при составлении тестов.
Полезные материалы
- HTML атрибут: disabled – HTML: HyperText Markup Language | MDN — Документация MDN содержит полное описание атрибута
disabled. - HTML Стандарт — Спецификация HTML с детальным описанием атрибута
disabled. - HTML атрибут disabled — Практическое руководство от W3Schools по использованию атрибута
disabled. - В чём разница между
disabled="disabled"иreadonly="readonly"? — Обсуждение на Stack Overflow различий междуdisabledиreadonly. - Как с помощью jQuery включить/выключить поле ввода? — Обсуждение на Stack Overflow о управлении состоянием поля ввода с использованием JavaScript.
- HTML Стандарт — Подробное обсуждение атрибута
disabledв контексте HTML-форм.


