Явно установлено disabled = "false" в HTML не работает

Я хотел бы явно указать кнопку как включенную в html файле. Причина в том, что мой код позже отключает кнопку для отключения, и если код сработает или я могу заметить, что кнопка отключена.

Я могу отключить кнопку с помощью

$("#btn").attr("disabled","true")

но затем html, содержащий:

<button id="btn" disabled="false">I want to be enabled!</button>

по-прежнему показывает кнопку как отключенную. Инспектор показывает:

<button id="btn" disabled="">I want to be enabled!</button>

Я знаю, что могу сделать

$("#btn").removeAttr("disabled") 

или аналогично, но это не удобно для многих элементов в html.

Ответ 1

Удивительно, но HTML не использует логические значения для логических атрибутов.

В HTML логические атрибуты указываются либо простым добавлением имени атрибута, либо (особенно в XHTML) с использованием имени атрибута в качестве его значения.

<input type="checkbox" disabled>                 <!-- HTML -->
<input type="checkbox" disabled />               <!-- Also HTML -->
<input type="checkbox" disabled="disabled" />    <!-- XHTML and HTML -->

Это задокументировано в спецификации HTML: http://www.w3.org/TR/html5/infrastructure.html#boolean-attribute.

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

Значения "true" и "false" недопустимы для логических атрибутов. Чтобы представить ложное значение, атрибут должен быть вообще опущен.

Ответ 2

Если вы используете AngularJS, попробуйте вместо этого ng-disabled. В этом случае вы можете использовать такие вещи, как:

ng-disabled="true"
ng-disabled="false"
ng-disabled={{expression}}

и работает как положено....

Ответ 3

Я знаю, что это старая тема, но поскольку нет заметного ответа, помогает ли это? Это отвечает на вопрос с явным образом помеченным как включенным.

<button enabled>My Text</button>
<!-- Which also works as: -->
<button enabled="enabled">My Text</button>

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

Ответ 4

В будущем может помочь кому-то.

selectLanguage.onchange = function() {
    var value = selectLanguage.value;
    if (value != '') {
        submitLanguage.removeAttribute('disabled');
    } else {
        submitLanguage.setAttribute('disabled', 'disabled');
    }
    // submitLanguage.setAttribute('enabled', 'enabled');
}