Código Javascript :
/**
* Funcion que se ejecuta al seleccionar una opcion del primer select
*/
function cargarSelect2(valor)
{
/**
* Este array contiene los valores del segundo select
* Los valores del mismo son:
* - hace referencia al value del primer select. Es para saber que valores
* mostrar una vez se haya seleccionado una opcion del primer select
* - value que se asignará
* - texto que se asignará
*/
var arrayValores=new Array(
new Array(1,1,"Ford"),
new Array(1,2,"Seat"),
new Array(1,3,"Opel"),
new Array(2,1,"Honda"),
new Array(2,2,"Yamaha")
);
if(valor==0)
{
// desactivamos el segundo select
document.getElementById("select2").disabled=true;
}else{
// eliminamos todos los posibles valores que contenga el select2
document.getElementById("select2").options.length=0;
// añadimos los nuevos valores al select2
document.getElementById("select2").options[0]=new Option("Selecciona una opcion", "0");
for(i=0;i<arrayValores.length;i++)
{
// unicamente añadimos las opciones que pertenecen al id seleccionado
// del primer select
if(arrayValores[i][0]==valor)
{
document.getElementById("select2").options[document.getElementById("select2").options.length]=new Option(arrayValores[i][2], arrayValores[i][1]);
}
}
// habilitamos el segundo select
document.getElementById("select2").disabled=false;
}
}
function cargarSelect3(valor)
{
/**
* Este array contiene los valores del tercer select
* Los valores del mismo son:
* - hace referencia al value del primer y del segundo select. Es para saber que valores
* mostrar una vez se haya seleccionado una opcion del primer select y del segundo
* - value que se asignará
* - texto que se asignará
*/
var arrayValores=new Array(
new Array(1,1,1,"Focus"),
new Array(1,1,2,"Fiesta"),
new Array(1,1,3,"Mondeo"),
new Array(1,2,1,"León"),
new Array(1,2,2,"Ibiza"),
new Array(1,3,1,"Corsa"),
new Array(1,3,2,"Zafira"),
new Array(1,3,3,"Astra"),
new Array(2,1,1,"CBR450"),
new Array(2,1,2,"VFR800F"),
new Array(2,2,1,"SR400")
);
if(valor==0)
{
// desactivamos el tercer select
document.getElementById("select3").disabled=true;
}else{
// eliminamos todos los posibles valores que contenga el select3
document.getElementById("select3").options.length=0;
// añadimos los nuevos valores al select3
document.getElementById("select3").options[0]=new Option("Selecciona una opcion", "0");
for(i=0;i<arrayValores.length;i++)
{
// unicamente añadimos las opciones que pertenecen al id seleccionado
// del segundo select
if(arrayValores[i][1]==valor)
{
document.getElementById("select3").options[document.getElementById("select3").options.length]=new Option(arrayValores[i][3], arrayValores[i][1]);
}
}
// habilitamos el tercer select
document.getElementById("select3").disabled=false;
}
}
Código :
[html] <form> <p> <select id='select1' onchange='cargarSelect2(this.value);'> <option value='0'>Selecciona una opcion</option> <option value='1'>Coches</option> <option value='2'>Motos</option> </select> </p> <p> <select id='select2' onchange='cargarSelect3(this.value);'> <option value='0'>Selecciona una opcion</option> </select> </p> <p> <select id='select3'> <option value='0'>Selecciona una opcion</option> </select> </p> </form> [/html]
