2012-08-16 212 views
22

我想根據條件啓用或禁用表格行中的複選框。啓用或禁用html中的複選框

碼 -

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

如果checkStat = 1,需要禁用其他複選框保持啓用。

這不起作用。它禁用所有的複選框。 有什麼建議嗎?

+0

什麼樣的變量是checkStat?它從何而來? – 2012-08-16 13:26:48

+0

@Pekka - checkStat是jsp變量,聲明在相同的jsp – anirudha 2012-08-16 14:41:34

+0

可能重複的[正確值的禁用屬性](http://stackoverflow.com/questions/6961526/correct-value-for-disabled-attribute) – 2014-07-06 11:03:18

回答

28

如果您指定disabled屬性,那麼您給它的值必須爲disabled。 (在HTML 5中,除了屬性值之外,您可以忽略所有內容;在HTML 4中,除屬性名稱外,您可以忽略所有內容)。

如果您不希望控件被禁用,則根本不要指定該屬性。

禁用:

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

啓用:

<input type="checkbox"> 

無效(但通常錯誤中恢復將被視爲無效):

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

所以,不知道你的模板語言,我想你正在尋找:

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

它不是爲我工作。它禁用所有的複選框。我正在使用jsp。 – anirudha 2012-08-16 14:38:47

1

HTML解析器根本不會像這樣解釋內聯JavaScript。

你可以這樣做:

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

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

沒有'getElementByName'方法。它是一個複數方法,返回一個節點列表,而不是一個元素。 – Quentin 2012-08-16 13:30:05

+0

@dystroy - 謝謝你的回答。但是,複選框將在所有具有相同ID的行中重複,因此禁用所有複選框。 – anirudha 2012-08-16 15:13:14

+2

永遠不要給同一個ID或名稱超過一個元素!您可以使用計數器來構建動態名稱/ ID('String id =「repriseCheckBox _」+ i ++')。 – 2012-08-16 15:29:23

-1

根據W3Schools你可以使用JavaScript禁用複選框。

<!-- 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> 

你可以看到演示在這裏工作:http://jsfiddle.net/antoinesubit/vptk0nh6/

-2

我知道這個問題是有點老了,但這裏是我的解決方案。

// 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 = "" 
    } 

希望這有助於!

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

也許讓OP知道你爲什麼給出了答案,即改進了什麼或者爲什麼你的代碼能夠工作。簡要解釋意味着OP可以充分理解並幫助下一個人或SO社區。 – 2017-08-02 10:37:52

+0

現在我找到了一個解決方案... 2017-08-02 11:21:42

0

在JSP中,你可以做這樣的:

<% 
boolean checkboxDisabled = true; //do your logic here 
String checkboxState = checkboxDisabled ? "disabled" : ""; 
%> 
<input type="checkbox" <%=checkboxState%>>