Multiple dynamic combo boxes

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • vgrssrtrs@libero.it

    Multiple dynamic combo boxes

    <html>
    <head>
    <script language="JavaS cript">
    <!--

    /*
    *** Multiple dynamic combo boxes
    *** by Mirko Elviro, 9 Mar 2005
    ***
    ***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 box

    data_1 = new Option("1", "$");
    data_2 = new Option("2", "$$");

    // second combo box

    data_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 box

    data_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 box

    data_2_2_1_1 = new Option("2211"," %")
    data_2_2_1_2 = new Option("2212"," %%")

    // other parameters

    displaywhenempt y=""
    valuewhenempty=-1

    displaywhennote mpty="-select-"
    valuewhennotemp ty=0


    function change(currentb ox) {
    numb = currentbox.id.s plit("_");
    currentbox = numb[1];

    i=parseInt(curr entbox)+1

    // I empty all combo boxes following the current one

    while
    ((eval("typeof( document.getEle mentById(\"comb o_"+i+"\"))!='u ndefined'"))
    &&
    (document.getEl ementById("comb o_"+i)!=null) ) {
    son = document.getEle mentById("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(displayw henempty,valuew henempty)
    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.getEle mentById(\"comb o_"+i+"\"))!='u ndefined'"))
    &&
    (document.getEl ementById("comb o_"+i)!=null) ) {

    eval("stringa=s tringa+'_'+docu ment.getElement ById(\"combo_"+ i+"\").selected Index")
    if (i==currentbox) break;
    i=i+1
    }


    // filling the "son" combo (if exists)

    following=parse Int(currentbox) +1

    if
    ((eval("typeof( document.getEle mentById(\"comb o_"+following+" \"))!='undefine d'"))
    &&
    (document.getEl ementById("comb o_"+following)! =null)) {
    son = document.getEle mentById("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)=='u ndefined'"))
    if (eval("typeof(" +stringa+"1)==' undefined'"))
    eval("son.optio ns[0]=new
    Option(displayw henempty,valuew henempty)")
    else
    eval("son.optio ns[0]=new
    Option(displayw hennotempty,val uewhennotempty) ")
    else
    eval("son.optio ns["+i+"]=new
    Option("+string a+i+".text,"+st ringa+i+".value )")
    i=i+1
    }
    //son.focus()
    i=1
    combostatus=''
    cstatus=stringa .split("_")
    while (cstatus[i]!=null) {
    combostatus=com bostatus+cstatu s[i]
    i=i+1
    }
    return combostatus;
    }
    }

    //-->
    </script>
    <title>Multip le dynamic combo boxes - by Elviro Mirko</title>
    </head>
    <body>
    <form>
    <select name="combo0" id="combo_0" onChange="chang e(this);"
    style="width:20 0px;">
    <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="chang e(this)"
    style="width:20 0px;">
    <option value="value1"> </option>
    </select>
    <BR><BR>
    <select name="combo2" id="combo_2" onChange="chang e(this);"
    style="width:20 0px;">
    <option value="value1"> </option>
    </select>
    <BR><BR>
    <select name="combo3" id="combo_3" onChange="chang e(this);"
    style="width:20 0px;">
    <option value="value1"> </option>
    </select>

    </form>
    </body>
    </html>

  • Marek Mänd

    #2
    Re: Multiple dynamic combo boxes

    vgrssrtrs@liber o.it wrote:[color=blue]
    > <html>
    > <head>
    > <script language="JavaS cript">
    > <!--
    >
    > /*
    > *** Multiple dynamic combo boxes
    > *** by Mirko Elviro, 9 Mar 2005
    > ***
    > ***Please do not remove this comment
    > */[/color]

    LOL where is your problem?
    NRN

    Comment

    • c.anandkumar@gmail.com

      #3
      Re: Multiple dynamic combo boxes

      I guess you can further improve on the function change(). It uses eval
      quite a lot and i think you can pass more arguments to it, have
      data[1][2] instead of data_1_2, etc. But what is the _problem_??

      Comment

      • Mick White

        #4
        Re: Multiple dynamic combo boxes

        c.anandkumar@gm ail.com wrote:
        [color=blue]
        > I guess you can further improve on the function change(). It uses eval
        > quite a lot and i think you can pass more arguments to it, have
        > data[1][2] instead of data_1_2, etc. But what is the _problem_??
        >[/color]

        I see 2 problems:

        Not quoting previous posting?
        The script?

        Mick

        Comment

        Working...