Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/08/2005, 09:45
pscheve
 
Fecha de Ingreso: septiembre-2004
Ubicación: Argentina
Mensajes: 49
Antigüedad: 20 años, 3 meses
Puntos: 0
Exclamación combos anidados, pero dinamicamente...

Hola gente...este post lo postié en el foro de js pero me recomendaron que lo posteara aquí, asi que aca me encuentro...vengo posteando de varios foros, espero encontrar aquí una respuesta definitiva
Tengo el siguiente código en js que me vincula el combo países con el de sus ciudades respectivas. Funciona bien si se agregan los datos manualmente. Mi problema es que necesito adaptarlo para que funcione dinamicamente, es decir que tome los datos de los países y ciudades de una base de datos. Intenté hacerlo con php pero se complicaba para relacionarlo con js...bueno, espero que alguno sepa como...

gracias de antemano!

el código es:

<html>
<head>
<script language="JavaScript">

/* Trae desde la base de datos los nombres de los paises */
/* y colóos en este arreglo. */
var aPaises = new Array(" ","Mexico","Espana","Venezuela"
);

var aEstados0 = new Array(
" "
);

/* Trae desde la base de datos los nombres de las ciudades */
/* de cada uno de los paises de la lista anterior y ponlos */
/* en arreglos individuales. */
var aEstados1 = new Array(" ","Ciudad de Mexico","Monterrey","Guadalara"
);

var aEstados2 = new Array(" ","Madrid","Barcelona","San Sebastian"
);

var aEstados3 = new Array(" ","Caracas","Coro","Maracay","Valencia"
);

/* Arma un arreglo general de estados a partir de los arreglos */
/* anteriores. Es importante que cada arreglo comience por un */
/* valor en blanco y que el primer arreglo de ciudades, llamado */
/* aqui aEstados0, no contenga ningúemento. */
var aEstados = new Array( aEstados0, aEstados1, Estados2, aEstados3
);

function opcion(oCntrl, iPos, sTxt, sVal){
var selOpcion=new Option(sTxt, sVal);
eval(oCntrl.options[iPos]=selOpcion);
}

function cambia(oMster, oCntrl){
var nSelected = oMster.selectedIndex;
while (oCntrl.length) oCntrl.remove(0);
for(var i = 0; i < aEstados[nSelected].length; i++)
opcion(oCntrl, i, aEstados[nSelected][i], String(i));
}

function llena(oCntrl){
while (oCntrl.length) oCntrl.remove(0);
for(var i = 0; i < aPaises.length; i++)
opcion(oCntrl, i, aPaises[i], String(i));
}

</script>
</head>
<body>
<form name="frm">
Pais
<select name="pais" onchange="cambia(this, document.frm.ciudad)">
<option value=" ">&nbsp;</option>
</select>
&nbsp;&nbsp;&nbsp;
Ciudad
<select name="ciudad">
<option value=" ">&nbsp;</option>
</select>
</form>
<script language="JavaScript">
llena(document.frm.pais);
</script>
</body>
</html>
__________________
"Sólo sé que no sé nada..." - Sócrates - (un adelantado...!)