Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/02/2013, 05:26
paula1234
 
Fecha de Ingreso: febrero-2013
Ubicación: Asturias
Mensajes: 10
Antigüedad: 11 años, 2 meses
Puntos: 0
Zend evento onchange

Hola a todos, necesito vuestra ayuda urgentemente ;) ya que estoy desesperada, ante todo mil gracias por las respuestas.


Estoy utilizando Zend, y quiero anidar dos combox, con javascript.

El primer combo muestra provincias de España, segun la provincia seleccionada se mostrarán en el segundo combo los municipios que forman la misma.


Os pongo el código que tengo porque no encuentro q es lo q falla :(


FORMULARIO:

$provincia= new Zend_Form_Element_Select('id_provincia');
$provincia->setLabel('Provincia: ');
$provincia->setRequired(true);

$tabla_provincias = new Application_Model_DbTable_Provincia();
foreach ($tabla_provincias->listar() as $c) {
$provincia->addMultiOption($c->id_provincia, $c->nombre);
}//Accedo a la BBDD para listar provincias.

$provincia->setAttrib('onChange', 'cargarZonas();');
$zona= new Zend_Form_Element_Select('id_zona');
$zona->setLabel('Zona: ');
$zona->setRequired(true);
$zona->clearValidators();

$tabla_zonas = new Application_Model_DbTable_Zona();
$zona->addMultiOption(NULL,'Elija una zona de su provincia');


METODO CARGARZONAS() EN JAVASCRIPT (LO PUSE EN EL LAYOUT)

<script language="javascript" type="text/javascript">
function cargarZonas(){
var opcionSeleccionada=$("provincia").val();
var selectZona=$('zona');
$(opcionSeleccionada);
$.ajax(
{
async: true,
type: 'POST',
url: '/pedidos/ajax',
data: "id_provincia="+opcionSeleccionada,
dataType: 'json',

beforeSend: function(data){
selectZona.html('<label>Cargando...</label>');
},
success: function(data){
selectZona.append(
$('<option></option>').val(data.id).html(data.version)
);
},
error: function(requestData, strError, strTipoError){
}

});
}
</script>


CONTROLADOR PEDIDOS ACCION AJAX


public function ajaxAction()
{
$this->_helper->viewRenderer->setNoRender();
$this->_helper->layout->disableLayout();
if (!$this->getRequest()->isXmlHttpRequest())
{
$this->_redirect('index');
}
$tabla_zonas= new Application_Model_DbTable_Zona();
$id_provincia = $_POST["id_provincia"];
echo $id_provincia;
$zonas=$tabla_zonas->getAsKeyValueJSON($id_provincia);
echo Zend_Json::encode($zonas);
}


EN EL MODELO TENGO LA TABLA QUE REPRESENTA A LOS DISTINTOS MUNICIPIOS, SE LLAMA ZONA Y TIENE EL METODO getAsKeyValueJSON(), ES DONDE HAGO LA SELECT

public function getAsKeyValueJSON($id_provincia) {
$select = $this->select()
->where('id_provincia = ?', $id_provincia);
$resultados_zonas = $this->fetchAll($select)->toArray();
return $resultados_zonas;
}






MIL GRACIAS POR VUESTRA AYUDA ;), perdonar las molestias pero no domino muy bien esto.