Как работают булевы атрибуты в HTML и почему disabled="false" всё равно отключает элемент?
Атрибуты HTML
Булев атрибут включается самим фактом присутствия на элементе, а его значение браузер не читает.
Поэтому <button disabled="false"> всё равно создаёт отключённую кнопку: атрибут есть, значит он «включён». Чтобы выключить, атрибут нужно убрать.
<button disabled>Отправить</button>
<button disabled="">Тоже отключена</button>
<button disabled="false">И эта тоже отключена</button>
<button>Активна</button>Типичные булевы атрибуты
disabled, checked, required, readonly, hidden, autofocus, multiple, open, defer, async.
Атрибут и свойство в DOM
В JavaScript используйте свойство: button.disabled = false удалит атрибут. В React disabled={false} тоже корректно не выводит атрибут.
Не путать с перечислимыми атрибутами вроде contenteditable="false" или aria-expanded="false": у них значение false читается и работает.
Коротко для собеседования
Булев атрибут включает само присутствие, значение не читается, поэтому disabled="false" всё равно отключает элемент. Чтобы выключить, атрибут удаляют.