Tiene unos checkbox que cuando se pulsa el de un nivel superior deselecciona los checkbox seleccionados anteriormente.
Necesito hacer también a la inversa, es decir, si hay un nivel superior seleccionado y pulso un nivel inferior, tendría que deseleccionar los de niveles superiores.
(Solo hay cuatro niveles, 0,1,2,3 y el valor está en n3) Pero ojo, esto es una demo, por lo que luego el menú tendrá varias opciones en los niveles y no conoceré los nombres de los niveles superiores, porque vienen de una consulta SQL.
Los nombres de los checkbox los formo con el valor del nivel que está en n3 y el de la variable que le sigue, de esta forma un nombre de un nivel 0 estará formado por 0_+ n0 + n0 + n0 quedando por ejemplo así 0_3_3_3
Un nivel 1 será 1_+ n0 + n1 + n1: 1_3_32_32
Y así sucesivamente.
Necesitaría poder decir por ejemplo algo así
if (casfam[name_0].checked == true ) Entonces lo descheckeo
Pero del name_0 solo conozco el principio.
Por ejemplo si pulso el 1º nivel y este es 1_3, todo los checkbox superiores que viene detras, se llamarán 2_3_(lo que sea) en el 2º nivel y 3_3_(lo que sea) en el 3º nivel
Es decir, con la solución de que ponga en false todos los checkbox que comiencen en su nombre con x_3 donde x será el nivel por ejemplo, ya funcionaría.
Pero NO sé como decirle que me lea todos los checkbox que su nombre comiencen por algo
Alguna sugerencia.
Código:
<script> //Detectar checkeos function check_box(obj,n3,n0,n1,n2) { name_box = casfam[obj.name].name; valor_box = casfam[obj.name].value; valor_che = casfam[obj.name].checked; nivel = n3 // DESMARCAMOS checkboxs niveles inferiores // Si pulsamos el nivel 3 if (n3 == "3" && valor_che == true){ name_2 = "2_" + n0 + "_" + n1 + "_" + n2 if (casfam[name_2].checked == true) { casfam[name_2].checked = false; } name_1 = "1_" + n0 + "_" + n1 + "_" + n1 if (casfam[name_1].checked == true) { casfam[name_1].checked = false; } name_0 = "0_" + n0 + "_" + n0 + "_" + n0 if (casfam[name_0].checked == true) { //casfam[name_0].disabled = true; casfam[name_0].checked = false; } } // Si pulsamos el nivel 2 if (n3 == "2" && valor_che == true){ name_1 = "1_" + n0 + "_" + n1 + "_" + n1 if (casfam[name_1].checked == true) { casfam[name_1].checked = false; } name_0 = "0_" + n0 + "_" + n0 + "_" + n0 if (casfam[name_0].checked == true) { casfam[name_0].checked = false; } } // Si pulsamos el nivel 1 if (n3 == "1" && valor_che == true){ name_0 = "0_" + n0 + "_" + n0 + "_" + n0 if (casfam[name_0].checked == true) { casfam[name_0].checked = false; } } //-- Cerramos el Detector de Checkeos } </script> <html><body> <div id="familias" class="cascada_fam"> <form name="casfam" action> <div id="0_3" class="fam_00"> <input class="fam" type="checkbox" name="0_3_3_3" onclick="check_box(this,'0','3','3','3')" value="0|3"><a class="l_tit" href="javascript:mostrardiv('1_3');"> - COMPONENTES</a> (5) <div id="1_3" style="display:none;" class="fam_10"> <input class="fam" type="checkbox" name="1_3_36_36" onclick="check_box(this,'1','3','36','36')" value="1|36"><a class="l_tit" href="javascript:mostrardiv('2_3_36');"> - CONTROLADORAS</a> (5) <div id="2_3_36" style="display:none;" class="fam_10"> <input class="fam" type="checkbox" name="2_3_36_EH" onclick="check_box(this,'2','3','36','EH')" value="2|36"><a class="l_tit" href="javascript:mostrardiv('3_3_36_EH');"> - Adaptadores</a> (5) <div id="3_3_36_EH" style="display:none;" class="fam_10"> <input class="fam" type="checkbox" name="3_3_36_EH" onclick="check_box(this,'3','3','36','EH')" value="3|EH"> Audio/Video (5) </div> </div> </div> </div> </form> </div> </body></html>