Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/02/2013, 13:04
clarova
 
Fecha de Ingreso: mayo-2012
Mensajes: 25
Antigüedad: 11 años, 10 meses
Puntos: 1
Problema con combobox dependientes

Hola, estoy intentado hacer dos selects de paises y ciudades, he visto muchos ejemplos por internet pero el problema es que estoy usando codeigniter y no sé si el problema lo tengo en algo referente a CI o a algo de Jquery, asique no se muy bien si este tema corresponde más a este foro o al de CI.

Pongo el código que tengo.

El formulario:
Código:
<?php echo form_open('usuarios/addform'); ?>
...
<label>Email</label>
<span class="errormes"><?php echo form_error('email'); ?></span>
<div class="existeEmail errormes"></div>
<?php 
       $js='id="email" onblur="comprobar()"';
       echo form_input('email',set_value('email'),$js); 
?> 

<label>Pais</label>
<span class="errormes"><?php echo form_error('pais'); ?></span>
<?php 
      $jspais='id="pais" onChange="cargarCiudades();"';
      echo form_dropdown('pais', $paises, $jspais); 
 ?>
<label>Ciudad</label>
<span class="errormes"><?php echo form_error('ciudad'); ?></span>
<?php 
      $jsciudad='id="ciudad"';
      echo form_dropdown('ciudad', $ciudades, $jsciudad);
?>
...
<?php echo form_close(); ?>
El archivo js:
Código:
function cargarCiudades(){

    $.post('cargar_ciudades','pais='+$('#pais').val(),vuelta_ciudades);
}
function vuelta_ciudades(ciudades){
    
    $('#ciudad').html(ciudades);
}
El controlador:

Código:
function cargar_ciudades(){
        
        $pais = $this->input->post('pais');

        $ciudad = $this->usuarios->getCiudad($pais);
        
        $this->output->enable_profiler(FALSE); // quitar el profiler
        $this->view = FALSE; //linea para desactivar las vistas
        $this->layout = FALSE; //linea para desactivar el layout
        $this->load->view('ajax_view',array('content'=>$ciudad));
}
El modelo:

Código:
public function getCiudad($pais){
        
        $this->db->select('nombre');
        $this->db->from('ciudades');
        $this->db->where('fk_paises', $pais);
        $query = $this->db->get();
        
        if ($query->num_rows() != 1){
            throw new InvalidArgumentException('Error al buscar las ciudades del pais seleccionado'); 
        }
        
        $ciudad = $query->row_array();
        return $ciudad;
}
Bien, pues la comprobación del email si me funciona, pero cuando selecciono un pais, no pasa absolutamente nada, lo miro con el firebug y no sale ninguna peticion ajax ni nada, no sé porque. Lo tengo todo en el mismo js, lo de la comprobación del email y lo de los paises y ciudades.

Alguien puede ayudarme??

Muchas gracias!