2013-07-11 39 views
13

Vui lòng xem tại đây: http://jsfiddle.net/nShQs/Làm cách nào để bật hộp kiểm bị tắt động?

Nhấn nút tắt rồi nhấn nút bật. Hộp kiểm không được bật.

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); 

câu trả lời

Như câu trả lời nói đó là vì thuộc tính disabled là một thuộc tính boolean. Xem here.

+1

tôi đã chọn câu trả lời PSL vì ông đã trả lời 1. – batman

Trả lời

21

Chỉ cần làm

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

} 

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

Với điều này bạn đang thiết lập thuộc tính của phần tử DOM, trong khi thiết hiện diện thuộc tính của thuộc tính disabled sẽ vô hiệu hóa các hộp kiểm tra, vì vậy ngay cả khi bạn làm x.setAttribute("disabled", "false"); nó vẫn sẽ ở đó vào phần tử dưới dạng thuộc tính.

Demo

hoặc bạn sẽ chỉ làm:

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

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

disabled như thuộc tính và disabled như bất động sản là khác nhau.

+0

Điều đó khác với những gì tôi đã làm? – batman

+0

@learner bạn sử dụng nó như là một functoin, nó không phải là một –

+0

@learner thấy câu trả lời, tôi đã đưa ra lời giải thích. – PSL

6

Đặt disabledtài sản chứ không phải là thuộc tính (fiddle).

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

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

Một điều khiển sẽ bị vô hiệu hóa nếu disabledthuộc tính có mặt ở tất cả các - bất kể giá trị của nó (fiddle). Đặt thuộc tính disabled thành false sẽ xóa thuộc tính disabled.

Các vấn đề liên quan