2012-08-16 35 views
22

Quiero habilitar o deshabilitar la casilla de verificación en la fila de la tabla en función de la condición.habilitar o deshabilitar la casilla de verificación en html

código -

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

si checkStat = 1, hay que desactivar la casilla de verificación que permiten mantener otra cosa.

No funciona. Deshabilita todas las casillas de verificación. ¿Alguna sugerencia?

+0

qué tipo de variable es checkStat? ¿De dónde viene? –

+0

@Pekka - checkStat es una variable jsp, declarada en el mismo jsp – anirudha

+0

posible duplicado de [Valor correcto para el atributo deshabilitado] (http://stackoverflow.com/questions/6961526/correct-value-for-disabled-attribute) –

Respuesta

28

Si especifica el atributo disabled, entonces el valor que le da debe ser disabled. (En HTML 5 puede dejar todo excepto el valor del atributo. En HTML 4 puede dejar todo excepto el nombre del atributo.)

Si no desea que se deshabilite el control, no especifique el atributo en absoluto .

minusválidos:

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

Activado:

<input type="checkbox"> 

no válida (pero por lo general el error recuperada para ser tratados como personas con discapacidad):

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

Así que, sin conocer su idioma plantilla, Supongo que estás buscando:

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

No es trabajando para mi Deshabilita todas las casillas de verificación. Estoy usando jsp. – anirudha

1

El analizador HTML simplemente no interpreta el javascript inline como este.

Usted puede hacer esto:

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

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

No hay método 'getElementByName'. Es un método plural y devuelve una lista de nodos, no un elemento. – Quentin

+0

@dystroy - Gracias por su respuesta. Sin embargo, la casilla de verificación se repetirá en todas las filas con el mismo ID, por lo que desactivará todas las casillas de verificación. – anirudha

+2

¡Nunca dé la misma identificación o nombre a más de un elemento! Puede usar un contador para compilar nombres dinámicos/id ('String id =" repriseCheckBox _ "+ i ++'). –

-1

Según la W3Schools se puede usar JavaScript para casilla de verificación desactivada.

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

Se puede ver la demo de trabajo aquí: http://jsfiddle.net/antoinesubit/vptk0nh6/

-2

Sé que esta pregunta es un poco viejo, pero aquí está mi solución.

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

Hope this helps!

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

Quizás le explique al OP por qué dio la respuesta que hizo, es decir, qué se mejoró o por qué su código funcionará. Dar una breve explicación significa que el OP puede comprender completamente y ayudar a la siguiente persona, o a la comunidad SO. –

+0

ahora descubro una solución mejor ...

0

en JSP puede hacerlo de esta manera:

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