2012-08-16 45 views
22

Tôi muốn bật hoặc tắt hộp kiểm trong hàng của bảng theo điều kiện.bật hoặc tắt hộp kiểm trong html

mã -

<td><input type="checkbox" name="repriseCheckBox" disabled={checkStat == 1 ? true : false}/></td> 

nếu checkStat = 1, cần phải vô hiệu hóa hộp kiểm khác giữ nó cho phép.

Nó không hoạt động. Nó vô hiệu hóa tất cả các hộp kiểm. Bất kỳ đề xuất nào?

+0

những loại biến là checkStat? Nó đến từ đâu? –

+0

@Pekka - checkStat là biến jsp, được khai báo trong cùng một jsp – anirudha

+0

trùng lặp có thể có của [Giá trị chính xác cho thuộc tính bị vô hiệu hóa] (http://stackoverflow.com/questions/6961526/correct-value-for-disabled-attribute) –

Trả lời

28

Nếu bạn chỉ định thuộc tính disabled thì giá trị bạn cung cấp cho nó phảidisabled. (Trong HTML 5, bạn có thể bỏ mọi thứ ngoại trừ giá trị thuộc tính. Trong HTML 4 bạn có thể bỏ mọi thứ ngoại trừ tên thuộc tính.)

Nếu bạn không muốn điều khiển bị tắt thì không chỉ định thuộc tính .

Disabled:

<input type="checkbox" disabled> 
<input type="checkbox" disabled="disabled"> 

Enabled:

<input type="checkbox"> 

không hợp lệ (nhưng thường lỗi khôi phục được đối xử như vô hiệu hóa):

<input type="checkbox" disabled="1"> 
<input type="checkbox" disabled="true"> 
<input type="checkbox" disabled="false"> 

Vì vậy, mà không biết ngôn ngữ mẫu của bạn, Tôi đoán bạn đang tìm kiếm:

<td><input type="checkbox" name="repriseCheckBox" {checkStat == 1 ? disabled : }/></td> 
+1

Nó không phải là làm việc cho tôi. Nó vô hiệu hóa tất cả các hộp kiểm. Tôi đang sử dụng jsp. – anirudha

1

Trình phân tích cú pháp HTML đơn giản không giải thích javascript nội tuyến như thế này.

Bạn có thể làm điều này:

<td><input type="checkbox" id="repriseCheckBox" name="repriseCheckBox"/></td> 

<script>document.getElementById("repriseCheckBox").disabled=checkStat == 1 ? true : false;</script> 
+0

Không có phương thức 'getElementByName'. Nó là một phương thức số nhiều và trả về một danh sách nút, không phải là một phần tử. – Quentin

+0

@dystroy - Cảm ơn bạn đã trả lời. Tuy nhiên, hộp kiểm sẽ lặp lại trong tất cả các hàng có cùng id để vô hiệu hóa tất cả các hộp kiểm. – anirudha

+2

Không bao giờ cung cấp cùng một id hoặc tên cho nhiều hơn một phần tử! Bạn có thể sử dụng bộ đếm để tạo tên/id động ('String id =" repriseCheckBox _ "+ i ++'). –

-1

Theo các W3Schools bạn có thể sử dụng JavaScript cho hộp kiểm tàn tật.

<!-- Checkbox who determine if the other checkbox must be disabled --> 
<input type="checkbox" id="checkboxDetermine"> 
<!-- The other checkbox conditionned by the first checkbox --> 
<input type="checkbox" id="checkboxConditioned"> 
<!-- JS Script --> 
<script type="text/javascript"> 
    // Get your checkbox who determine the condition 
    var determine = document.getElementById("checkboxDetermine"); 
    // Make a function who disabled or enabled your conditioned checkbox 
    var disableCheckboxConditioned = function() { 
     if(determine.checked) { 
      document.getElementById("checkboxConditioned").disabled = true; 
     } 
     else { 
      document.getElementById("checkboxConditioned").disabled = false; 
     } 
    } 
    // On click active your function 
    determine.onclick = disableCheckboxConditioned; 
    disableCheckboxConditioned(); 
</script> 

Bạn có thể xem bản demo làm việc ở đây: http://jsfiddle.net/antoinesubit/vptk0nh6/

-2

Tôi biết câu hỏi này là một ít tuổi nhưng đây là giải pháp của tôi.

// HTML 
// <input type="checkbox" onClick="setcb1()"/> 
// <input type="checkbox" onClick="setcb2()"/> 

// cb1 = checkbox 1 
// cb2 = checkbox 2 
    var cb1 = getId('cb1'), 
     cb2 = getId('cb2'); 

    function getId(id) { 
    return document.getElementById(id); 
    } 

    function setcb1() { 
    if(cb1.checked === true) { 
     cb2.checked = false; 
     cb2.disabled = "disabled"; // You have to disable the unselected checkbox 
    } else if(cb1.checked === false) { 
     cb2.disabled = ""; // Then enable it if there isn't one selected. 
    } 
    } 

    function setcb2() { 
    if(cb2.checked === true) { 
     cb1.checked = false; 
     cb1.disabled = "disabled" 
    } else if(cb2.checked === false) { 
     cb1.disabled = "" 
    } 

Hy vọng điều này sẽ hữu ích!

1
<input type="checkbox" value="" ng-model="t.IsPullPoint" onclick="return false;" onkeydown="return false;"><span class="cr"></span></label> 
+0

Có thể cho OP biết lý do bạn đưa ra câu trả lời bạn đã làm, tức là những gì được cải thiện hoặc tại sao mã của bạn sẽ hoạt động. Đưa ra một giải thích ngắn gọn có nghĩa là OP hoàn toàn có thể hiểu và giúp đỡ người tiếp theo, hoặc cộng đồng SO. –

+0

bây giờ tôi tìm ra một giải pháp tốt nhất ...

0

Trong jsp bạn có thể làm điều đó như thế này:

<% 
boolean checkboxDisabled = true; //do your logic here 
String checkboxState = checkboxDisabled ? "disabled" : ""; 
%> 
<input type="checkbox" <%=checkboxState%>> 
Các vấn đề liên quan