JavaScript - COMBOS LIGADOS

 
Vista:

COMBOS LIGADOS

Publicado por JOSE (1 intervención) el 08/09/2006 20:35:26
Este codigo lo vi en alguna seccion de este foro y quiero ver si alguien me puede ayudar con lo siguiente:

este script permite seleccionar un pais y de éste, se despliega una lista de ciudades. La duda es: ¿cómo se puede agregar una lista mas? es decir, una vez seleccionado el pais y ciudad, que se despliege otra lista con los municipios correspondientes de los datos seleccionados anteriormente.

Saludos!!!!

:::::::::::::: CODIGO :::::::::::::::::::::::::

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

/* Trae desde la base de datos los nombres de los paises */
/* y colcalos en este arreglo. */
var aPaises = new Array(
" ",
"Mexico",
"España",
"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 M?co",
"Monterrey",
"Guadalajara"
);

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

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 ningn elemento. */
var aEstados = new Array(
aEstados0,
aEstados1,
aEstados2,
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=" "> </option>
</select>

Ciudad
<select name="ciudad">
<option value=" "> </option>
</select>
</form>
<script language="JavaScript">
llena(document.frm.pais);

function cambia1(oMster, oCntrl){
alert("AQUI") ;
/* 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));
*/
}

</script>
</body>
</html>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:COMBOS LIGADOS

Publicado por gerardo medina (2 intervenciones) el 10/09/2006 20:34:38
Puedes trabajar con un artificio para que tu lista base, que al elegirlo se modifique la lista dependiente.
Para ello al "<select></select>" (con su respecto id y name) dependiente, debe estar dentro de unos "<div></div>" (con su respectivo id),

Ahora debes construir una función que tenga como parámetro el valor elegido en la lista base y el objeto que representa; para que después pueda es manipular el DIV, a través de la propiedad "inner HTML" (valido en IE y FireFox). Entonces, tendrías que cargar con un array de la dependiente con la referencia de la base. Además, tendrias en una variable de cadena de texto; por ejemplo: "<select name=XXX id=XXX>". Recorres en un bucle el array, concatenando los valores que tengas con el array con "<option>", y después lo cierras "</option>"... y así hasta que acabes el bucle. Ya acabado el proceso lo cierras la variable de texto con lo valores establecidos "</select>"
Y después la funcion lo llamas en el evento "onchange", "onclick" del lista desplegable base...

Ahora de todo lo dicho debes considerar los array() ya que puedes formar de diversas formas, con índices numéricos enteros o cadenas de texto, o multidmencional, como esta expuesto en foro con el asunto "array multidimensional!", ahora todo lo expuesto no esta como código, ahora debes interpretarlo (ya esta en gran parte hecho) en algoritmo y ejecutarlo....

suerte!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar