Please see here: http://jsfiddle.net/nShQs/
Press the disable button and then the enable button. The checkbox doesn't get enabled.
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);
answer
As the answers tell it is because the disabled attribute is a boolean attribute.
See here.
Press the disable button and then the enable button. The checkbox doesn't get enabled. As the answers tell it is because the disabled attribute is a boolean attribute.
The checked attribute is a boolean attribute. When present, it specifies that an <input> element should be pre-selected (checked) when the page loads. The checked attribute can be used with <input type="checkbox"> and <input type="radio"> . The checked attribute can also be set after the page load, with a JavaScript.
attr("checked")) be if ($('#incarcerated'). attr("checked") || $('#support'). attr("checked")) ? Checking both lower checkboxes, then unchecking one will enable the first checkbox again.
Just do
function enable() {
    document.getElementById("check").disabled= false;
}
function disable() {
     document.getElementById("check").disabled= true;
}
With this you are setting the property of the DOM element, while setting attribute presence of attribute disabled will disable the check box, so even if you do x.setAttribute("disabled", "false"); it will still be there on the element as attribute.
Demo
or you would just do:
function disable() {
    document.getElementById("check").setAttribute('disabled', 'disabled');
}
function enable() {
   document.getElementById("check").removeAttribute('disabled');
}
disabled as attribute and disabled as property are different.
Set the disabled property rather than the attribute (fiddle).
function enable() {
    document.getElementById("check").disabled = false;    
}
function disable() {
    document.getElementById("check").disabled = true;
}
A control will remain disabled if the disabled attribute is present at all - regardless of its value (fiddle). Setting the disabled property to false will remove the disabled attribute.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With