Ver Mensaje Individual
  #1 (permalink)  
Antiguo 13/10/2010, 05:18
Avatar de Sonairo
Sonairo
 
Fecha de Ingreso: octubre-2010
Mensajes: 2
Antigüedad: 14 años, 1 mes
Puntos: 0
Pregunta Selects dependientes

Hola,

estoy creando un formulario con 3 select:

Provincia.
Subzona.
Localidad.

Al cambiar provincia hago la peticion de subzonas y localidades de la provincia.
Al cambiar subzona hago peticion de localidades de esa subzona.

La cuestion es que al cambiar provincia todo va bien, pero cuando cambio la subzona (que proviene como respuesta al cambiar la provincia) parece que no puedo pillar el id al venir de una respuesta ajax y por lo tanto no puedo hacer una nueva petición para recibir las nuevas localidades.

Este es el codigo:

El js:
Código:
  
<script>
$(document).ready(function() {

        $("#loading").ajaxStart(function(){
                $(this).show();
                $('#resultado').hide();
        });

        $('#select_provincias').change(function() {
                $.ajax({
                  type:"POST",
                  url:"<?php echo base_url();?>"+"index.php/ajax/selects_filtro_portada",
                  data:"provincia="+$('#select_provincias').val(),
                  success: function(data){
                        $('#resultado').html(data);
                  }
                });
            });

       $('#select_subzonas').change(function() {
                $.ajax({
                  type:"POST",
                  url:"<?php echo base_url();?>"+"index.php/ajax/selects_filtro_portada2",
                  data:"subzona="+$('#select_subzonas').val(),
                  success: function(data){
                        $('#resultado2').html(data);
                  }
                });
            });

             $('#select_provincias').change();

            $("#loading").ajaxStop(function(){
                $(this).hide();
                $('#resultado').show();
            });
});
</script>
El PHP:
Código PHP:
function selects_filtro_portada(){

    
$provincia $_POST["provincia"];

    
$subzonas $this->Front->llenar_select_subzonas_filtro($provincia);
    
$subzonas $subzonas->result_array();

    
$localidades $this->Front->llenar_select_localidades_filtro($provincia);
    
$localidades $localidades->result_array();
    
    echo 
'Comarca:<br />
                       <select name="subzona" id="select_subzonas" style="width:150px;">
                       <option value = "0">Todas</option>'
;

    foreach (
$subzonas as $subzona){
                
$id_subzona $subzona['id_subzona'];
                
$nombre_subzona $subzona['nombre_subzona'];
                echo 
"<option value='$id_subzona'>$nombre_subzona</option>";
    }
     echo 
'</select>';

    echo 
'<div style="float:left; margin:7px 0 0 0;">Localidad:<br /></div>
                       <div id="resultado2">
                            <select name="localidad" id="select_localidades" style="width:150px;">
                            <option value = "0">Todas</option>'
;

      foreach (
$localidades as $localidad){
                
$id_localidad $localidad['id_municipio'];
                
$nombre_localidad $localidad['nombre'];
                echo 
"<option value='$id_localidad'>$nombre_localidad</option>";
    }

     echo 
'</select></div>';

}

function 
selects_filtro_portada2(){

    
$subzona $_POST["subzona"];
   
    
$localidades $this->Front->llenar_select_localidades_filtro2($subzona);
    
$localidades $localidades->result_array();
    echo 
'<select name="localidad" id="select_localidades" style="width:150px;">
                            <option value = "0">Todas</option>'
;

      foreach (
$localidades as $localidad){
                
$id_localidad $localidad['id_municipio'];
                
$nombre_localidad $localidad['nombre'];
                echo 
"<option value='$id_localidad'>$nombre_localidad</option>";
    }

     echo 
'</select>';


Código HTML:
 <div class="px180" style="height:75px;" id="loading" style="display:none">
                Cargando filtros...
                </div>
               <div class="px180" style="height:75px;" id="resultado">
                       
               </div> 
Espero haberme explicado, muchas gracias.

Última edición por Sonairo; 13/10/2010 a las 08:26