Foros del Web » Programando para Internet » Jquery »

jquery y checkbox

Estas en el tema de jquery y checkbox en el foro de Jquery en Foros del Web. Hola a todos! A ver si alguien puede darme una solución ya que llevo bastante con el tema y no hay manera. De primeras contar ...
  #1 (permalink)  
Antiguo 19/05/2010, 12:13
 
Fecha de Ingreso: mayo-2006
Mensajes: 475
Antigüedad: 18 años
Puntos: 58
jquery y checkbox

Hola a todos!
A ver si alguien puede darme una solución ya que llevo bastante con el tema y no hay manera. De primeras contar que es la primera vez que uso jQuery así que disculpas por el código.
Tengo un formulario con esta estructura
Un <h3> como titulo y depues una lista con diferentes opciones todas con checkbox. Todo esto sería un grupo.
Como este contenido es dinámico no hay un número determinado de <h3> ni de checkbox.

Lo que intento es lo siguiente. Al seleccionar un checkbox de cada grupo el resto se ponen en disabled y en el <h3> se escribe el valor de check checked.
Hasta aquí va todo perfecto
El problema me surge cuando hay un grupo (<h3> + la lista de chicbox) en la cual pueden ser varios los seleccionados, con lo cual en el h3 se debe escribir el valor de todos los seleccionados. utilizo una capa para guardar lo resultados anteriores o me escribe todo el rato(no se vacía nunca) o no escribe.
Resultado... nada. Os dejo un trozo del código y os aseguro que haré un monumento, ya que me está rompiendo la cabeza. Gracias por anticipado.

Código:
    $(".cajas").click(function(){ //los checkbox son de la clase cajas, al hacer click
			var desc ='.nombre'+$(this).attr("id");
			var saca = $(desc).val(); // tengo el id de la caracteristica seleccionada
			var texto='.car'+$(this).attr("id");
			var nom = $(texto).attr("id"); //tengo el texto a escribir
			if(saca==44){ // si la caracteristica tiene id 44
				 var especial=$("#caracteristica44").text(); // recojo información de la capa oculta
				}else{
				 especial="";
					}
					
        $(".cajas").each(function(){
           $(this).removeAttr("disabled",false); // quito todos los disabled
			$(".accordion h3 #"+saca+"L").text("");//vacio el texto del h3
			$(".accordion h3."+saca).removeClass("select");// quito la clase asociada al h3
			$("#caracteristica44").text(""); //borra todo
        });
		
        $(".cajas:checked").each(function(){
			$(".accordion h3 #"+saca+"L").text(nom +" "+especial);//escribe
			$(".accordion h3."+saca).addClass("select");//añade la clase
			if(saca==44){
				$("#caracteristica44").text(nom +" "+especial); //escribo en la capa oculta el valor
				especial="";
				}
  #2 (permalink)  
Antiguo 19/05/2010, 18:27
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: jquery y checkbox

Probaste contar las cajas?

$("input:checked").size() o $("input:checked").length()

Para modificar el h3 pordes ir haciendole esto:

actual = $("h3.tipo").text()
$("h3.tipo").text(actual);

Juntando todo: si hay mas de una seleccion, usas una variable para almacenar y modificar el h3. Si hay solo una seleccion, reemplazas el contenido directamente.
  #3 (permalink)  
Antiguo 20/05/2010, 06:25
 
Fecha de Ingreso: mayo-2006
Mensajes: 475
Antigüedad: 18 años
Puntos: 58
Respuesta: jquery y checkbox

Hola Mayid, lo primero muchas gracias. algo he avanzado sin embargo ahora se escribe en el h3 "especial" todo, hagas checked o unchecked. Es decir, si tengo dos check y uno se llama A y el otro B, al seleccionar el primero se escribe A, al seleccionar el segundo se escribe B y A (hasta aquí iría todo perfecto) sin embargo si desmarco A, se escribe A y B y A, si vuelvo a marca a se escribe A y A y B y A. Así hasta el infinito.
Te dejo de nuevo el codigo actual

Código:

 $(".cajas").click(function(){
			var desc ='.nombre'+$(this).attr("id");
			var saca = $(desc).val(); // tengo el id de la caracteristica
			var texto='.car'+$(this).attr("id");
			var nom = $(texto).attr("id"); //tengo el texto
			if(saca==44){ // Si el check pertenece a la caracteristica 44
				 var especial=$(".accordion h3 #"+saca+"L").text(); // Guardo el texto que hay en una variable
				}else{
				 especial=""; //si no es la 44 la vacio
					}
					
        $(".cajas").each(function(){
           $(this).removeAttr("disabled",false);
			$(".accordion h3 #"+saca+"L").text("");//vacio el texto
			$(".accordion h3."+saca).removeClass("select");// quito la imagen verde
       });
		
        $(".cajas:checked").each(function(){
			$(".accordion h3 #"+saca+"L").text(nom +" "+especial);//escribe
			$(".accordion h3."+saca).addClass("select");//añade circulo verde
  #4 (permalink)  
Antiguo 20/05/2010, 09:34
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: jquery y checkbox

Tenes que comprobar si al hacer click se esta checkeando o "desdeckeando".

http://api.jquery.com/checked-selector/
  #5 (permalink)  
Antiguo 20/05/2010, 16:15
 
Fecha de Ingreso: mayo-2006
Mensajes: 475
Antigüedad: 18 años
Puntos: 58
Respuesta: jquery y checkbox

Graciasssssssssssssssss! La verdad es que el no era el adecuado pero efectivamente lo importante es saber si se está o no checkeando. Si se está checkeando lo sumo a la variable, si se está descheckeando lo quito de la variable con split().join()
De verdad, que muchas gracias por tu ayuda.

Etiquetas: checkbox
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 23:47.