»
EnglishFrenchVietnamese

Print - Multiple Dynamic Combo Boxes - JavaScriptBank.com

Full version: jsB@nk » Form » Dropdown » Multiple Dynamic Combo Boxes
URL: https://www.javascriptbank.com/multiple-dynamic-combo-boxes.html

Multiple Dynamic Combo Boxes © JavaScriptBank.comThis lightweight yet powerful script lets you create multiple (unlimited) combo boxes, with each one linked and dependant on the one proceeding it. Very nice.

Full version: jsB@nk » Form » Dropdown » Multiple Dynamic Combo Boxes
URL: https://www.javascriptbank.com/multiple-dynamic-combo-boxes.html



JavaScript
<script language="JavaScript" type="text/javascript"><!--/**** Multiple dynamic combo boxes*** by Mirko Elviro, 9 Mar 2005*** Script featured and available on JavaScript Kit (http://www.javascriptkit.com)******Please do not remove this comment*/// This script supports an unlimited number of linked combo boxed// Their id must be "combo_0", "combo_1", "combo_2" etc.// Here you have to put the data that will fill the combo boxes// ie. data_2_1 will be the first option in the second combo box// when the first combo box has the second option selected// first combo boxdata_1 = new Option("1", "$");data_2 = new Option("2", "$$");// second combo boxdata_1_1 = new Option("11", "-");data_1_2 = new Option("12", "-");data_2_1 = new Option("21", "--");data_2_2 = new Option("22", "--");data_2_3 = new Option("23", "--");data_2_4 = new Option("24", "--");data_2_5 = new Option("25", "--");// third combo boxdata_1_1_1 = new Option("111", "*");data_1_1_2 = new Option("112", "*");data_1_1_3 = new Option("113", "*");data_1_2_1 = new Option("121", "*");data_1_2_2 = new Option("122", "*");data_1_2_3 = new Option("123", "*");data_1_2_4 = new Option("124", "*");data_2_1_1 = new Option("211", "**");data_2_1_2 = new Option("212", "**");data_2_2_1 = new Option("221", "**");data_2_2_2 = new Option("222", "**");data_2_3_1 = new Option("231", "***");data_2_3_2 = new Option("232", "***");// fourth combo boxdata_2_2_1_1 = new Option("2211","%")data_2_2_1_2 = new Option("2212","%%")// other parameters    displaywhenempty=""    valuewhenempty=-1    displaywhennotempty="-select-"    valuewhennotempty=0function change(currentbox) {numb = currentbox.id.split("_");currentbox = numb[1];    i=parseInt(currentbox)+1// I empty all combo boxes following the current one    while ((eval("typeof(document.getElementById(\"combo_"+i+"\"))!='undefined'")) &&           (document.getElementById("combo_"+i)!=null)) {         son = document.getElementById("combo_"+i);     // I empty all options except the first one (it isn't allowed)     for (m=son.options.length-1;m>0;m--) son.options[m]=null;     // I reset the first option     son.options[0]=new Option(displaywhenempty,valuewhenempty)     i=i+1    }// now I create the string with the "base" name ("stringa"), ie. "data_1_0"// to which I'll add _0,_1,_2,_3 etc to obtain the name of the combo box to fill    stringa='data'    i=0    while ((eval("typeof(document.getElementById(\"combo_"+i+"\"))!='undefined'")) &&           (document.getElementById("combo_"+i)!=null)) {           eval("stringa=stringa+'_'+document.getElementById(\"combo_"+i+"\").selectedIndex")           if (i==currentbox) break;           i=i+1    }// filling the "son" combo (if exists)    following=parseInt(currentbox)+1    if ((eval("typeof(document.getElementById(\"combo_"+following+"\"))!='undefined'")) &&       (document.getElementById("combo_"+following)!=null)) {       son = document.getElementById("combo_"+following);       stringa=stringa+"_"       i=0       while ((eval("typeof("+stringa+i+")!='undefined'")) || (i==0)) {       // if there are no options, I empty the first option of the "son" combo   // otherwise I put "-select-" in it     if ((i==0) && eval("typeof("+stringa+"0)=='undefined'"))         if (eval("typeof("+stringa+"1)=='undefined'"))            eval("son.options[0]=new Option(displaywhenempty,valuewhenempty)")         else             eval("son.options[0]=new Option(displaywhennotempty,valuewhennotempty)")      else              eval("son.options["+i+"]=new Option("+stringa+i+".text,"+stringa+i+".value)")      i=i+1   }       //son.focus()       i=1       combostatus=''       cstatus=stringa.split("_")       while (cstatus[i]!=null) {          combostatus=combostatus+cstatus[i]          i=i+1          }       return combostatus;    }}//--></script><!--    This script downloaded from www.JavaScriptBank.com    Come to view and download over 2000+ free javascript at www.JavaScriptBank.com-->


HTML
<form><select name="combo0" id="combo_0" onChange="change(this);" style="width:200px;"><option value="value1">-select-</option><option value="value2">1</option><option value="value3">2</option></select><BR><BR><select name="combo1" id="combo_1" onChange="change(this)" style="width:200px;"><option value="value1">  </option></select><BR><BR><select name="combo2" id="combo_2" onChange="change(this);" style="width:200px;"><option value="value1">  </option></select><BR><BR><select name="combo3" id="combo_3" onChange="change(this);" style="width:200px;"><option value="value1">  </option></select></form><!--    This script downloaded from www.JavaScriptBank.com    Come to view and download over 2000+ free javascript at www.JavaScriptBank.com-->