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]