Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/04/2007, 14:35
Avatar de regiomaster
regiomaster
 
Fecha de Ingreso: marzo-2006
Mensajes: 8
Antigüedad: 18 años, 1 mes
Puntos: 0
¿Como reescribir las opciones de un select dinamicamente?

Gracias programadormax, la opcion que me diste me sirvió para otras situaciones. Pasar y guardar los parametros por sesion al usar select da mejores resultados. De esta manera los select para seleccionar sexo, edad y pais se mantienen con la opcion seleccionada mientras estas en la sesion. ¡WOW!

Tengo un select donde al seleccionar el pais, se rellena dinamicamente el select de provincias/estados y al seleccionar un estado cambia dinamicante el correspondiente a las ciudades, los select se llenan correctamente. Esto se logra con un javascript.

El problema surge cuando selecciono una provincia o una ciudad y realizo la busqueda, ya que se vacian los select llenados dinamicamente, cuando deberia quedar llena con los nombres de los estados y ciudades y con la opcion elegida seleccionada.

Alguien tiene una idea de como hacerle para mantener la opcion seleccionada y todas las opciones disponibles del select como en el caso de select estaticos. He buscado informacion pero solo encuentro casos simples.

Código:
<script>
//defino una serie de varibles Array para cada país
var provincias_México=new Array("Seleccione","Aguascalientes", "Baja California", "Baja California Sur")
var provincias_Extranjero=new Array("No disponible.")

//función que cambia las provincias del select de provincias en función del país que se haya escogido en el select de país.
function cambia_provincia(){
	//tomo el valor del select del pais elegido
	var country
	country = document.AdminForm2.country[document.AdminForm2.country.selectedIndex].value
	//miro a ver si el pais está definido
	if (country != 0) {
		//si estaba definido, entonces coloco las opciones de la provincia correspondiente.
		//selecciono el array de provincia adecuado
		mis_provincias=eval("provincias_" + country)
		//calculo el numero de provincias
		num_provincias = mis_provincias.length
		//marco el número de provincias en el select
		document.AdminForm2.state.length = num_provincias
		//para cada provincia del array, la introduzco en el select
		for(i=0;i<num_provincias;i++){
		   document.AdminForm2.state.options[i].value=mis_provincias[i]
		   document.AdminForm2.state.options[i].text=mis_provincias[i]
		}	
	}else{
		//si no había provincia seleccionada, elimino las provincias del select
		document.AdminForm2.state.length = 1
		//coloco un guión en la única opción que he dejado
		document.AdminForm2.state.options[0].value = "Seleccione"
	    document.AdminForm2.state.options[0].text = "Seleccione"
		 
	}
	//marco como seleccionada la opción primera de provincia
	document.AdminForm2.state.options[0].selected = true
	
}


var citys_1=new Array("Seleccione","Aguascalientes", "Rincón de Romos" )
var citys_2=new Array("Seleccione","Mexicali", "Tijuana","Ensenada", "Tecate","Rosarito")

//función que cambia las ciudades del select.
function cambia_city(){
	//tomo el valor del select de la estado elegido.
	var state
	state = document.AdminForm2.state[document.AdminForm2.state.selectedIndex].value
	//miro a ver si el pais está definido
	if (state != 0) {
		//si estaba definido, entonces coloco las opciones de la provincia correspondiente.
		//selecciono el array de provincia adecuado
		mis_citys=eval("citys_" + document.AdminForm2.state.selectedIndex)
		//calculo el numero de provincias
		num_citys = mis_citys.length
		//marco el número de provincias en el select
		document.AdminForm2.city.length = num_citys
		//para cada provincia del array, la introduzco en el select
		for(i=0;i<num_citys;i++){
		   document.AdminForm2.city.options[i].value=mis_citys[i]
		   document.AdminForm2.city.options[i].text=mis_citys[i]
		}	
	}else{
		//si no había provincia seleccionada, elimino las provincias del select
		document.AdminForm2.city.length = 1
		//coloco un guión en la única opción que he dejado
		document.AdminForm2.city.options[0].value = "Seleccione"
	    document.AdminForm2.city.options[0].text = "Seleccione"
	}
	//marco como seleccionada la opción primera de provincia
	document.AdminForm2.city.options[0].selected = true
}

</script>



<select name="country" onChange="cambia_provincia()" size="1">
<option value="0">Seleccione
<option value="México" <?php if ($_SESSION['buscaFiltros']['country'] == México) { echo 'Selected'; } ?> >México
<option value="Extranjero" <?php if ($_SESSION['buscaFiltros']['country'] == Extranjero) { echo 'Selected'; } ?> >Extrajero
</select>

<select name="state" onChange="cambia_city()" size="1">
<option value="0" >Seleccione
</select>

<select name="city"  size="1">
<option value="0">Seleccione
</select>

Última edición por regiomaster; 29/04/2007 a las 14:52 Razón: Mejorar la vista