Ver Mensaje Individual
  #3 (permalink)  
Antiguo 08/08/2012, 02:12
sjj
 
Fecha de Ingreso: octubre-2008
Mensajes: 213
Antigüedad: 15 años, 6 meses
Puntos: 12
Respuesta: 3 selects dependientes

Hola. Ante todo te recomiendo utilizar cosas que comprendas, ya que sino lo entendés es muy probable que deje de funcionar. Yo acá te dejo un ejemplo armado con 2 níveles, pero podés convertirlo en 3, 4 o la cantidad que gustes.

La función Javascript:

Código HTML:
<script type="text/javascript">
function slctr(texto,valor){
	this.texto = texto
	this.valor = valor
}
	
var Chubut=new Array()
	Chubut[0] = new slctr("Comodoro Rivadavia Centro",'Comodoro Rivadavia Centro')
	Chubut[1] = new slctr("Comodoro Rivadavia Apt",'Aeropuerto de Comodoro Rivadavia')
	Chubut[2] = new slctr("Esquel Centro",'Esquel Centro')
	Chubut[3] = new slctr("Esquel Apt",'Aeropuerto de Esquel')
	Chubut[4] = new slctr("Puerto Madryn Centro",'Puerto Madryn Centro')
	Chubut[5] = new slctr("Puerto Madryn Apt",'Aeropuerto de Puerto Madryn')
    Chubut[6] = new slctr("Trelew Centro",'Trelew Centro')
	Chubut[7] = new slctr("Trelew Apt",'Aeropuerto de Trelew')
	
var Cordoba=new Array()
	Cordoba[0] = new slctr("Córdoba Centro",'Cordoba Centro')
	Cordoba[1] = new slctr("Córdoba Apt",'Aeropuerto de Cordoba')
	Cordoba[2] = new slctr("Río Cuarto",'Rio Cuarto')
	
var Mendoza=new Array()
	Mendoza[0] = new slctr("Mendoza Centro",'Mendoza Centro')
	Mendoza[1] = new slctr("Mendoza Apt",'Aeropuerto de Mendoza')
	Mendoza[2] = new slctr("San Rafael Centro",'San Rafael Centro')
	Mendoza[3] = new slctr("San Rafael Apt",'Aeropuerto de San Rafael')
					
function slctryole(cual,donde){
	if(cual.selectedIndex != 0){
		donde.length=0
		cual = eval(cual.value)
		for(m=0;m<cual.length;m++){
			var nuevaOpcion = new Option(cual[m].texto);
			donde.options[m] = nuevaOpcion;
			if(cual[m].valor != null){
				donde.options[m].value = cual[m].valor
			}
			else{
				donde.options[m].value = cual[m].texto
			}
		}
	}
}
</script> 
Y el llamado a la misma:

Código HTML:
<select name="select" onchange="slctryole(this,this.form.select2)">
            <option></option>
            <option value="Chubut">Chubut</option>
            <option value="Cordoba">C&oacute;rdoba</option>
            <option value="Mendoza">Mendoza</option>
            </select>
            <option></option>
          </select>
<select name="select2">
            <option></option>
          </select> 
Los datos los recogés como en cualquier select común desde la página a la que te dirige al enviar el formulario.