Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Problemas con estado checkbox

Estas en el tema de Problemas con estado checkbox en el foro de Frameworks JS en Foros del Web. Hola q tal foreros Tengo un problema bastante raro, o bueno a mi me parece que asi es. Tengo una aplicacion que permite mostrar departamentos ...
  #1 (permalink)  
Antiguo 26/07/2010, 18:42
Avatar de acoevil  
Fecha de Ingreso: julio-2008
Ubicación: localhost/colombia/sevillaValle.php
Mensajes: 1.123
Antigüedad: 11 años, 10 meses
Puntos: 32
Problemas con estado checkbox

Hola q tal foreros

Tengo un problema bastante raro, o bueno a mi me parece que asi es.

Tengo una aplicacion que permite mostrar departamentos y municipios, cada de partamento esta acompañado de un checkbox que al seleccionarlo muestra los municipios de ese departamento en un cuadro de dialogo, bueno eso funciona correctamente, el problema se presenta en el momento de seleccionar mas de un departamento...

Si selecciono un departamento se muestran sus municipios, despues que aparecen, puedo seleccionar los municipios que quiera enviar.

Si lo hiciera el estado en el cual quedarian los checkbox seria

Departamento 1 . true, true, true, false, false, false

Es como si tuviera seleccionado los 3 primeros y los 3 ultimos no.

El problema sucede cuando selecciono otro departamento, al parecer la seleccion de este hace que los municipios anteriores cambien de estado y todos queden en estado true

Si seleccionara el otro departamento quedaria asi


Departamento 1 . true, true, true, true, true, true
Departamento 2 . true, true, true, true, true, true

Si fuera que selecciona todos los municipios del departamento 2 quedaria asi, y pues cambia el estado de los departamento antes seleccionados, el codigo es el siguiente.


Código Javascript:
Ver original
  1. $("input[id*='_chekear']").click( function() {
  2.         if( $(this).attr("checked") )  {
  3.  
  4.             titulo = this.title;
  5.             id_actual = this.id;
  6.             id = id_actual.split("_");
  7.  
  8.             agregarMunicipios( this.value );
  9.  
  10.             $("#departamentos-municipios").ajaxStop( function() {
  11.                 $("#departamandosmMostrados").val("#" + id[ 0 ] + "_");
  12.                 $("#" + id[ 0 ] + "_").css("display", "block");
  13.  
  14.                 $("#" + id[ 0 ] + "_" + " table tr td input[name*='municipios[]']").each( function() {
  15.  
  16.                     $(this).attr("checked", true);
  17.                 } )
  18.  
  19.                 var dialogo = $('#departamentos-municipios').dialog({
  20.                     autoOpen: true,
  21.                     show: 'fold',
  22.                     hide: 'drop',
  23.                     height : 400,
  24.                     width : 600,
  25.                     title : titulo,
  26.                     buttons: {
  27.                         Cancelar : function () {
  28.                             $(this).dialog('close');
  29.  
  30.                             codigoDepartamento = $("#departamandosmMostrados").val();
  31.                             $( codigoDepartamento + " table tr td input[name*='municipios[]']").each( function() {
  32.                                 $(this).attr("checked", false);
  33.                             });
  34.                             $( codigoDepartamento + "chekear").attr("checked", false);
  35.                         },
  36.                         Aceptar: function() {
  37.                             $(this).dialog('close');
  38.  
  39.                             $("#departamentos-municipios > div").each( function() {
  40.                                 nombre_div = this.id;
  41.                                 elementos = "";
  42.                                 $("#" + nombre_div +  " tr td input[name='municipios[]']").each( function () {
  43.                                     elementos += " " + $(this).attr("checked");
  44.                                 } );
  45.                                 info = $("#prueba").html();
  46.                                 $("#prueba").html( info + "<br /> Capa: " + nombre_div  + " Elementos " + elementos);
  47.  
  48.                             } );
  49.                         }
  50.                     }
  51.  
  52.                 });
  53.  
  54.                 dialogo.css("text-align", "left");
  55.  
  56.  
  57.  
  58.             } );
  59.  
  60.  
  61.  
  62.         }
  63.     } );





Código Javascript:
Ver original
  1. agregarMunicipios = function( departamentos ) {
  2.         codigoDepartamento = departamentos;
  3.  
  4.         $.post("../ServletSeleccionarMunicipios", {
  5.             "departamentos" : codigoDepartamento,
  6.             "codDepartamento" : 0
  7.         }, function( data ) {
  8.  
  9.             $(data).find('municipios').each( function() {
  10.                 var $municipios = $(this);
  11.  
  12.                 checkMunicipios = "";
  13.                 codMunicipios = "";
  14.                 nombreMunicipios = "";
  15.                 codDepartamento = "";
  16.  
  17.                 $municipios.find("departamentos").each( function () {
  18.                     var $departamentos = $(this);
  19.  
  20.  
  21.                     $departamentos.find("municipio").each( function() {
  22.                         var $municipio = $(this);
  23.                         codDepartamento = $municipio.attr("departamento");
  24.  
  25.  
  26.                         $municipio.find("codMunicipio").each( function( ) {
  27.                             codMunicipios += '-' +  $(this).text();
  28.                         });
  29.                         $municipio.find("nombre").each( function( ) {
  30.                             nombreMunicipios += '-' +  $(this).text();
  31.  
  32.                         });
  33.  
  34.                     } );
  35.                     codMunicipios = codMunicipios.split("-");
  36.                     nombreMunicipios = nombreMunicipios.split("-");
  37.                     for( n = 1; n < codMunicipios.length; n++ ) {
  38.                         checkMunicipios += '<tr><td></td><td><input type="checkbox" name="municipios[]" value="' + codDepartamento + '_' + codMunicipios[ n ] + '" checked="checked"/>( '+ codMunicipios[ n ] +' ) '+ nombreMunicipios[ n ] + '</td></tr>';
  39.                     }
  40.                     html = $('#departamentos-municipios').html();
  41.  
  42.                     if( ! ($('#' + codDepartamento + '_').is("div")) ) {
  43.                         $('#departamentos-municipios').html( html +
  44.                             "<div id='"+ codDepartamento +"_' style='display: none; border:0px solid #333'><table><tr><td colspan=\"2\"><input type=\"checkbox\" name=\"seleccionarMunicipios[]\" id=\""+ codDepartamento +"_seleccionarMunicipios\" title=\"municipios[]\" onclick=\"seleccionarTodosMunicipios(this.id)\" checked /><strong>Seleccionar Todos</strong></td></tr>"+ checkMunicipios +"</table></div>");
  45.                     }
  46.                     checkMunicipios = "";
  47.                     codMunicipios = "";
  48.                     nombreMunicipios = "";
  49.                     codDepartamento = "";
  50.  
  51.                 } );
  52.  
  53.             } );
  54.         });
  55.     }


Creo que el error puede estar aqui


Código Javascript:
Ver original
  1. checkMunicipios += '<tr><td></td><td><input type="checkbox" name="municipios[]" value="' + codDepartamento + '_' + codMunicipios[ n ] + '" checked="checked"/>( '+ codMunicipios[ n ] +' ) '+ nombreMunicipios[ n ] + '</td></tr>';


LES DEJO LA SOLCION


Código Javascript:
Ver original
  1. if( ! ($('#' + codDepartamento + '_').is("div")) ) {
  2.                                 $("<div id='"+ codDepartamento +"_' style='display: none; border:0px solid #333'><table><tr><td colspan=\"2\"><input type=\"checkbox\" name=\"seleccionarMunicipios[]\" id=\""+ codDepartamento +"_seleccionarMunicipios\" title=\"municipios[]\" onclick=\"seleccionarTodosMunicipios(this.id)\" checked /><strong>Seleccionar Todos</strong></td></tr>"+ checkMunicipios +"</table></div>").appendTo('#departamentos-municipios');
  3.                                
  4.                         }

Era problema de concatenacion....
__________________
Como presentar nuestros datos por medio de tablas . clase Aco_DataGrid Version 1.4

Última edición por acoevil; 28/07/2010 a las 12:29

Etiquetas: checkbox, estado
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 19:47.