cs1h Posted February 5, 2009 Share Posted February 5, 2009 Hi, I found this script on line that populates the choses in three drop down boxes (you choose from the first one and it populates the second, then you choose from the second and it populates the third). But I was wondering if there is a way to make it put a value into a hidden field (there would only be one value in the third choice) when you make the second choice instead of a drop down box. The code is, <HEAD> <script type="text/javascript"> var arrItems1 = new Array(); var arrItemsGrp1 = new Array(); arrItems1[3] = "Truck"; arrItemsGrp1[3] = 1; arrItems1[4] = "Train"; arrItemsGrp1[4] = 1; arrItems1[5] = "Car"; arrItemsGrp1[5] = 1; arrItems1[6] = "Boat"; arrItemsGrp1[6] = 2; arrItems1[7] = "Submarine"; arrItemsGrp1[7] = 2; arrItems1[0] = "Planes"; arrItemsGrp1[0] = 3; arrItems1[1] = "Ultralight"; arrItemsGrp1[1] = 3; arrItems1[2] = "Glider"; arrItemsGrp1[2] = 3; var arrItems2 = new Array(); var arrItemsGrp2 = new Array(); arrItems2[21] = "747"; arrItemsGrp2[21] = 0 arrItems2[31] = "Kolb Flyer"; arrItemsGrp2[31] = 1 arrItems2[35] = "Schwietzer Glider"; arrItemsGrp2[35] = 2 arrItems2[99] = "Chevy Malibu"; arrItemsGrp2[99] = 5 arrItems2[101] = "F-150"; arrItemsGrp2[101] = 3 arrItems2[103] = "Freight Train"; arrItemsGrp2[103] = 4 arrItems2[105] = "Oil Tanker"; arrItemsGrp2[105] = 6 arrItems2[200] = "Los Angelas Class"; arrItemsGrp2[200] = 7 function selectChange(control, controlToPopulate, ItemArray, GroupArray) { var myEle ; var x ; // Empty the second drop down box of any choices for (var q=controlToPopulate.options.length;q>=0;q--) controlToPopulate.options[q]=null; if (control.name == "firstChoice") { // Empty the third drop down box of any choices for (var q=form.thirdChoice.options.length;q>=0;q--) form.thirdChoice.options[q] = null; } // ADD Default Choice - in case there are no values myEle = document.createElement("option") ; myEle.value = 0 ; myEle.text = "[sELECT]" ; // controlToPopulate.add(myEle) ; controlToPopulate.appendChild(myEle) // Now loop through the array of individual items // Any containing the same child id are added to // the second dropdown box for ( x = 0 ; x < ItemArray.length ; x++ ) { if ( GroupArray[x] == control.value ) { myEle = document.createElement("option") ; //myEle.value = x ; myEle.setAttribute('value',x); // myEle.text = ItemArray[x] ; var txt = document.createTextNode(ItemArray[x]); myEle.appendChild(txt) // controlToPopulate.add(myEle) ; controlToPopulate.appendChild(myEle) } } } function selectChange(control, controlToPopulate, ItemArray, GroupArray) { var myEle ; var x ; // Empty the second drop down box of any choices for (var q=controlToPopulate.options.length;q>=0;q--) controlToPopulate.options[q]=null; if (control.name == "firstChoice") { // Empty the third drop down box of any choices for (var q=form.thirdChoice.options.length;q>=0;q--) form.thirdChoice.options[q] = null; } // ADD Default Choice - in case there are no values myEle=document.createElement("option"); theText=document.createTextNode("[sELECT]"); myEle.appendChild(theText); myEle.setAttribute("value","0"); controlToPopulate.appendChild(myEle); // Now loop through the array of individual items // Any containing the same child id are added to // the second dropdown box for ( x = 0 ; x < ItemArray.length ; x++ ) { if ( GroupArray[x] == control.value ) { myEle = document.createElement("option") ; //myEle.value = x ; myEle.setAttribute("value",x); // myEle.text = ItemArray[x] ; var txt = document.createTextNode(ItemArray[x]); myEle.appendChild(txt) // controlToPopulate.add(myEle) ; controlToPopulate.appendChild(myEle) } } } // --> </script> </HEAD> <!-- STEP TWO: Copy this code into the BODY of your HTML document --> <BODY> <form name=form> <table align="center"> <tr> <td> <select id="firstChoice" name="firstChoice" onchange="selectChange(this, form.secondChoice, arrItems1, arrItemsGrp1);"> <option value="0" selected>[sELECT]</option> <option value="1">Land</option> <option value="2">Sea</option> <option value="3">Air</option> </select> </td><td> <select id="secondChoice" name="secondChoice" onchange="selectChange(this, form.thirdChoice, arrItems2, arrItemsGrp2);"> </select> <select id="thirdChoice" name="thirdChoice"> </select> </td> </tr> </table> </form> <p><center> </center><p> All help is much appreciated, Cs1h Quote Link to comment Share on other sites More sharing options...
webster08 Posted February 5, 2009 Share Posted February 5, 2009 here is a quick fix; not exactly a pro move - lol (i am feeling kind of slack tonite anyway ); but it will work. <HEAD> <script type="text/javascript"> var arrItems1 = new Array(); var arrItemsGrp1 = new Array(); arrItems1[3] = "Truck"; arrItemsGrp1[3] = 1; arrItems1[4] = "Train"; arrItemsGrp1[4] = 1; arrItems1[5] = "Car"; arrItemsGrp1[5] = 1; arrItems1[6] = "Boat"; arrItemsGrp1[6] = 2; arrItems1[7] = "Submarine"; arrItemsGrp1[7] = 2; arrItems1[0] = "Planes"; arrItemsGrp1[0] = 3; arrItems1[1] = "Ultralight"; arrItemsGrp1[1] = 3; arrItems1[2] = "Glider"; arrItemsGrp1[2] = 3; var arrItems2 = new Array(); var arrItemsGrp2 = new Array(); arrItems2[21] = "747"; arrItemsGrp2[21] = 0 arrItems2[31] = "Kolb Flyer"; arrItemsGrp2[31] = 1 arrItems2[35] = "Schwietzer Glider"; arrItemsGrp2[35] = 2 arrItems2[99] = "Chevy Malibu"; arrItemsGrp2[99] = 5 arrItems2[101] = "F-150"; arrItemsGrp2[101] = 3 arrItems2[103] = "Freight Train"; arrItemsGrp2[103] = 4 arrItems2[105] = "Oil Tanker"; arrItemsGrp2[105] = 6 arrItems2[200] = "Los Angelas Class"; arrItemsGrp2[200] = 7 function selectChange(control, controlToPopulate, ItemArray, GroupArray) { var myEle ; var x ; // Empty the second drop down box of any choices for (var q=controlToPopulate.options.length;q>=0;q--) controlToPopulate.options[q]=null; if (control.name == "firstChoice") { // Empty the third drop down box of any choices for (var q=form.thirdChoice.options.length;q>=0;q--) form.thirdChoice.options[q] = null; } // ADD Default Choice - in case there are no values myEle = document.createElement("option") ; myEle.value = 0 ; myEle.text = "[sELECT]" ; // controlToPopulate.add(myEle) ; controlToPopulate.appendChild(myEle) // Now loop through the array of individual items // Any containing the same child id are added to // the second dropdown box for ( x = 0 ; x < ItemArray.length ; x++ ) { if ( GroupArray[x] == control.value ) { myEle = document.createElement("option") ; //myEle.value = x ; myEle.setAttribute('value',x); // myEle.text = ItemArray[x] ; var txt = document.createTextNode(ItemArray[x]); myEle.appendChild(txt) // controlToPopulate.add(myEle) ; controlToPopulate.appendChild(myEle) } } } function selectChange(control, controlToPopulate, ItemArray, GroupArray) { var myEle ; var x ; // Empty the second drop down box of any choices for (var q=controlToPopulate.options.length;q>=0;q--) controlToPopulate.options[q]=null; if (control.name == "firstChoice") { // Empty the third drop down box of any choices for (var q=form.thirdChoice.options.length;q>=0;q--) form.thirdChoice.options[q] = null; } // ADD Default Choice - in case there are no values myEle=document.createElement("option"); theText=document.createTextNode("[sELECT]"); myEle.appendChild(theText); myEle.setAttribute("value","0"); controlToPopulate.appendChild(myEle); // Now loop through the array of individual items // Any containing the same child id are added to // the second dropdown box for ( x = 0 ; x < ItemArray.length ; x++ ) { if ( GroupArray[x] == control.value ) { myEle = document.createElement("option") ; //myEle.value = x ; myEle.setAttribute("value",x); // myEle.text = ItemArray[x] ; var txt = document.createTextNode(ItemArray[x]); myEle.appendChild(txt) // controlToPopulate.add(myEle) ; controlToPopulate.appendChild(myEle) } } } function reroute() { var choice3 = document.getElementById("thirdChoice").getElementsByTagName("option")[1].innerHTML; document.getElementById("alternatechoice").value = choice3; } </script> </HEAD> <!-- STEP TWO: Copy this code into the BODY of your HTML document --> <BODY> <form name=form> <table align="center"> <tr> <td> <select id="firstChoice" name="firstChoice" onchange="selectChange(this, form.secondChoice, arrItems1, arrItemsGrp1);"> <option value="0" selected>[sELECT]</option> <option value="1">Land</option> <option value="2">Sea</option> <option value="3">Air</option> </select> </td><td> <select id="secondChoice" name="secondChoice" onchange="selectChange(this, form.thirdChoice, arrItems2, arrItemsGrp2);reroute()"> </select> <select id="thirdChoice" name="thirdChoice" style="display:none"> </select> </td> </tr> </table> <input type="hidden" id="alternatechoice"/> </form> <p><center> </center><p> Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.