Как включить отключенный флажок динамически? - программирование

Как включить отключенный флажок динамически?

Пожалуйста, смотрите здесь: http://jsfiddle.net/nShQs/

Нажмите кнопку отключения, а затем кнопку включения. Флажок не активирован.

HTML:

<input id="check" type="checkbox"/>
<input id="btn1" type="button" value="enable" />
<input id="btn2" type="button" value="disable" />

JS:

function enable() {
    var x = document.getElementById("check");
    alert(x.getAttribute("disabled"));
    x.setAttribute("disabled", "false");
    alert(x.getAttribute("disabled"));
}

function disable() {
    var x = document.getElementById("check");
    alert(x.getAttribute("disabled"));
    x.setAttribute("disabled", "true");
    alert(x.getAttribute("disabled"));
}
document.getElementById("btn1").addEventListener("click", enable);
document.getElementById("btn2").addEventListener("click", disable);

ответ

Как говорят ответы, это потому, что атрибут disabled является логическим атрибутом. См. здесь.

4b9b3361

Ответ 1

Просто сделай

function enable() {
    document.getElementById("check").disabled= false;

}

function disable() {
     document.getElementById("check").disabled= true;
}

При этом вы устанавливаете свойство элемента DOM, а установка атрибута атрибута disabled отключит этот флажок, поэтому даже если вы выполните x.setAttribute("disabled", "false");, он все равно будет присутствовать в атрибуте element.

Демо

или вы просто выполните:

function disable() {
    document.getElementById("check").setAttribute('disabled', 'disabled');
}

function enable() {
   document.getElementById("check").removeAttribute('disabled');
}

disabled как атрибут и disabled как свойство разные.

Ответ 2

Задайте свойство disabled , а не атрибут (fiddle).

function enable() {
    document.getElementById("check").disabled = false;    
}

function disable() {
    document.getElementById("check").disabled = true;
}

Элемент управления будет отключен, если присутствует атрибут disabled - независимо от его значения (fiddle). Установка свойства disabled на false приведет к удалению атрибута disabled .