Foros del Web » Programando para Internet » Javascript »

Deseleccionar checkboxes solo si su nombre contiene un texto ??

Estas en el tema de Deseleccionar checkboxes solo si su nombre contiene un texto ?? en el foro de Javascript en Foros del Web. Tengo este código que despliega y pliega un menú. Tiene unos checkbox que cuando se pulsa el de un nivel superior deselecciona los checkbox seleccionados ...
  #1 (permalink)  
Antiguo 09/08/2011, 11:15
 
Fecha de Ingreso: noviembre-2008
Ubicación: Barcelona
Mensajes: 52
Antigüedad: 15 años, 5 meses
Puntos: 0
Pregunta Deseleccionar checkboxes solo si su nombre contiene un texto ??

Tengo este código que despliega y pliega un menú.
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>

Etiquetas: checkbox, checked, jerarquia, menu-desplegable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:41.