2012-08-16 3 views
22

Chcę włączyć lub wyłączyć pole wyboru w wierszu tabeli na podstawie warunku.włączyć lub wyłączyć pole wyboru w html

code -

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

jeśli checkStat = 1, należy wyłączyć opcję inny trzymać go włączyć.

To nie działa. Wyłącza wszystkie pola wyboru. Jakieś sugestie?

+0

jaką zmienną jest checkStat? Skąd to pochodzi? –

+0

@Pekka - checkStat jest zmienną jsp, zadeklarowaną w tym samym jsp – anirudha

+0

możliwy duplikat [Poprawna wartość dla wyłączonego atrybutu] (http://stackoverflow.com/questions/6961526/correct-value-for-disabled-attribute) –

Odpowiedz

28

W przypadku określenia atrybutu disabled wartość, którą należy podać, musi być musi być być disabled. (W HTML 5 możesz pominąć wszystko poza wartością atrybutu.W HTML 4 możesz zostawić wszystko poza nazwą atrybutu).

Jeśli nie chcesz, aby kontrola była wyłączona, nie podawaj w ogóle atrybutu .

niepełnosprawnych:

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

Włączone:

<input type="checkbox"> 

Niepoprawnie (ale zazwyczaj błąd odzyskane być traktowane jako wyłączone):

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

Tak, nie znając język szablonów, Domyślam się, że szukasz:

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

To nie jest pracuję dla mnie. Wyłącza wszystkie pola wyboru. Używam jsp. – anirudha

1

Parser HTML po prostu nie interpretuje wbudowanego javascript w ten sposób.

Można to zrobić:

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

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

Nie ma metody "getElementByName". Jest to metoda mnoga i zwraca listę węzłów, a nie element. – Quentin

+0

@dystroy - Dziękuję za odpowiedź. Ale pole wyboru będzie powtarzać we wszystkich wierszach z tym samym identyfikatorem, więc wyłącza wszystkie pola wyboru. – anirudha

+2

Nigdy nie podawaj tego samego identyfikatora lub nazwy więcej niż jednemu elementowi! Możesz użyć licznika do budowania dynamicznych nazw/identyfikatorów ('String id =" repriseCheckBox _ "+ i ++'). –

-1

Według W3Schools można użyć JavaScript do wyboru niepełnosprawnych.

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

Możesz zobaczyć demo działa tutaj: http://jsfiddle.net/antoinesubit/vptk0nh6/

-2

Wiem, że to pytanie jest trochę stary, ale tutaj jest moje rozwiązanie.

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

Mam nadzieję, że to pomoże!

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

Może daj OP znać, dlaczego dałeś odpowiedź, którą zrobiłeś, tj. Co jest poprawione lub dlaczego twój kod zadziała. Podanie krótkiego wyjaśnienia oznacza, że ​​OP może w pełni zrozumieć i pomóc następnej osobie lub społeczności SO. –

+0

teraz znajdę jedno rozwiązanie Bester One ...

0

W JSP można zrobić to tak:

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