mbevon
01-02-2003, 07:23 AM
How could i develp a script to chech the values in two combo boxes and fill a listBox?
thanks
thanks
|
Click to See Complete Forum and Search --> : Populating List Box mbevon 01-02-2003, 07:23 AM How could i develp a script to chech the values in two combo boxes and fill a listBox? thanks khalidali63 01-02-2003, 07:37 AM combo boxes and fill a listBox As far as I know html has a select tag that is used inconjunction with the option tag? Your question may be refereing to VB or Java GUI objects.. Please be a bit more descriptive. mbevon 01-02-2003, 08:46 AM HERE'S WHAT I'M, TRYING TO DO </head> <body> <form name="form1" method="post" action=""> <select name="hc" id="hc"> <option value="bb">Barbados</option> <option value="GD">Grenada</option> <option value="ca">Canada</option> </select> <select name="sc" id="sc"> <option value="1">hs93</option> <option value="2">sitc93</option> <option value="3">hs96</option> <option value="4">sitc96</option> </select> <script language="JavaScript" type="text/JavaScript"> if ( document.form1.hc.value="bb" && form1.sitc.value=1) { <select name="select" size="1" multiple> <option>1996</option> <option>1997</option> <option>1998</option> </select> else { <select name="select" size="1" multiple> <option>1999</option> <option>2000</option> <option>2001</option> </select> } if ( document.form1.hc.value="gd" && form1.sitc.value=1) { <select name="select" size="1" multiple> <option>1994</option> <option>1995</option> <option>1996</option> <option>1997</option> </select> else { <select name="select" size="1" multiple> <option>1998</option> <option>1999</option> <option>2000</option> </select> } </script> </form> <p> </p></body> </html> mbevon 01-02-2003, 08:53 AM HERE'S WHAT I'M, TRYING TO DO </head> <body> <form name="form1" method="post" action=""> <select name="hc" id="hc"> <option value="bb">Barbados</option> <option value="GD">Grenada</option> <option value="ca">Canada</option> </select> <select name="sc" id="sc"> <option value="1">hs93</option> <option value="2">sitc93</option> <option value="3">hs96</option> <option value="4">sitc96</option> </select> <script language="JavaScript" type="text/JavaScript"> if ( document.form1.hc.value="bb" && form1.sitc.value=1) { <select name="select" size="1" multiple> <option>1996</option> <option>1997</option> <option>1998</option> </select> else { <select name="select" size="1" multiple> <option>1999</option> <option>2000</option> <option>2001</option> </select> } if ( document.form1.hc.value="gd" && form1.sitc.value=1) { <select name="select" size="1" multiple> <option>1994</option> <option>1995</option> <option>1996</option> <option>1997</option> </select> else { <select name="select" size="1" multiple> <option>1998</option> <option>1999</option> <option>2000</option> </select> } </script> </form> <p> </p></body> </html> khalidali63 01-02-2003, 11:04 AM BTW I think what you need is create the first listbox on load,then when a user makes a selection from that list box another list box with info pertaining to the selection made in first List box will appear,and then a third list box appear when user makes a selection from the second one..but thats just me below is the code. let me know Khalid <html> <head> <title>Solution for mbevon</title> </head> <body> <form name="form1" method="post" action=""> <select name="hc" id="hc" onchange="processLists(1);" style="width:100pt;"> <option value="-1">List box A</option> <option value="bb">Barbados</option> <option value="gd">Grenada</option> <option value="ca">Canada</option> </select> <select name="sc" id="sc" onchange="processLists(2);" style="width:100pt;"> <option value="-1">List box B</option> <option value="1">hs93</option> <option value="2">sitc93</option> <option value="3">hs96</option> <option value="4">sitc96</option> </select> </form> <div id="newlist" style="position:absolute;"></div> <script language="JavaScript" type="text/JavaScript"> var arrA = new Array(); var arrB = new Array(); function processLists(flag){ var listA = document.form1.hc; var listB = document.form1.sc; var newListStr = ""; var createOK = false; if(flag==1){ arrA = getSelectedValues(listA); }else if(flag==2){ arrB = getSelectedValues(listB); } if(arrA.length>0 && arrB.length>0){ newListStr +=createNewListBox(arrA,arrB); createOK = true; } if(createOK){ var newlistObject = document.getElementById("newlist"); newlistObject.style.visibility = "visible"; newlistObject.innerHTML =newListStr; createOK = false; } } function createNewListBox(arrA,arrB){ var listbox=""; var range = new Array(); for(x=0;x<arrA.length;x++){ var val = arrA[x]; //alert("value ="+val); switch (val){ case "bb": range = getRange(arrB); listbox += createListBox(range); break; case "gd": range = getRange(arrB); listbox += createListBox(range); break; case "ca": range = getRange(arrB); listbox += createListBox(range); break; } } return listbox; } function createListBox(range){ var start = parseInt(range[0]); var end = (range.length>1)? parseInt(range[range.length-1]):start; var str="<select name=\"newList\" style=\"width:100pt;\" onchange=\"processNewList();\">\n"; str +="<option value=\"-1\">List box C\n"; for(x=start;x<end+1;x++){ str +="<option value=\""+x+"\">"+x+"\n"; } str+="</select>\n"; return str; } function getRange(arrB){ var temp = ""; for(n=0;n<arrB.length;n++){ if(arrB[n]=="1"){ temp = "1993 1994 1995"; break; }else if(arrB[n]=="2"){ temp = "1996 1997 1998"; break; }else if(arrB[n]=="3"){ temp = "1998 1999 2000 2001"; break; }else if(arrB[n]=="4"){ temp = "1994 1995 1996 1997 1998"; break; } } return temp.split(" "); } function getSelectedValues(list){ var len = list.length; var ctr=0; var values = new Array(); for(x=0;x<len;x++){ if(list[x].selected && list[x].value!="-1"){ values[ctr] = list[x].value; ctr++; } } return values; } </script> </body> </html> mbevon 01-02-2003, 12:17 PM Thanks for your response so far but i'm still having some problems Firstly i would like listbox C to be a multi select list box Secondly it not achieving my objective each country has it's own year list hs/sitc93 or hs/sitc96 if i select BB in listA AND hs93 or sitc93 in listb i should get 1994,1995,1996,1997 in listc else if i select BB in listA AND hs96 or sitc96 in listb i should get 1998,1999,2000 if i select CA in listA AND hs93 or sitc93 in listb i should get 1994,1995, in listc else if i select CA in listA AND hs96 or sitc96 in listb i should get 1996,1997,1998,1999,2000 I'll appreciate you help thanks again khalidali63 01-02-2003, 12:52 PM do you mean that hs93 and sitc93 will result in the same data?If so then in the list it should only display it like this hs93/sitc93 hs96/sitc96 ? is th eabove correct? mbevon 01-02-2003, 01:17 PM I prefer them to be listed separate because they will be used in a query. here is what i've done so far check BB for hs93,hs96,sitc93,sitc96 <html> <head> <title>Solution for mbevon</title> </head> <body> <form name="form1" method="post" action=""> <select name="hc" id="hc" onchange="processLists(1);" style="width:100pt;"> <option value="-1">List box A</option> <option value="bb">Barbados</option> <option value="gd">Grenada</option> <option value="ca">Canada</option> </select> <select name="sc" id="sc" onchange="processLists(2);" style="width:100pt;"> <option value="-1">List box B</option> <option value="1">hs93</option> <option value="2">sitc93</option> <option value="3">hs96</option> <option value="4">sitc96</option> </select> </form> <div id="newlist" style="position:absolute;"></div> <script language="JavaScript" type="text/JavaScript"> var arrA = new Array(); var arrB = new Array(); function processLists(flag){ var listA = document.form1.hc; var listB = document.form1.sc; var newListStr = ""; var createOK = false; if(flag==1){ arrA = getSelectedValues(listA); }else if(flag==2){ arrB = getSelectedValues(listB); } if(arrA.length>0 && arrB.length>0){ newListStr +=createNewListBox(arrA,arrB); createOK = true; } if(createOK){ var newlistObject = document.getElementById("newlist"); newlistObject.style.visibility = "visible"; newlistObject.innerHTML =newListStr; createOK = false; } } function createNewListBox(arrA,arrB){ var listbox=""; var range = new Array(); for(x=0;x<arrA.length;x++){ var val = arrA[x]; //alert("value ="+val); switch (val){ case "bb": range = getRange(arrB); listbox += createListBox(range); break; case "gd": range = getRange(arrB); listbox += createListBox(range); break; case "ca": range = getRange(arrB); listbox += createListBox(range); break; } } return listbox; } function createListBox(range){ var start = parseInt(range[0]); var end = (range.length>1)? parseInt(range[range.length-1]):start; var str="<select name=\"newList\" multiple style=\"width:100pt;\" onchange=\"processNewList();\">\n"; str +="<option value=\"-1\">List box C\n"; for(x=start;x<end+1;x++){ str +="<option value=\""+x+"\">"+x+"\n"; } str+="</select>\n"; return str; } function getRange(arrB){ var temp = ""; for(n=0;n<arrB.length;n++){ if(arrA[n]=="bb" && arrB[n]=="1" || arrB[n]=="2"){ temp = "1970 1995"; break; }else if(arrA[n]=="bb" && arrB[n]=="3" || arrB[n]=="4"){ temp = "1996 2001"; break; }else if(arrB[n]=="2"){ temp = "1996 1997 1998"; break; }else if(arrB[n]=="3"){ temp = "1998 1999 2000 2001"; break; }else if(arrB[n]=="4"){ temp = "1994 1995 1996 1997 1998"; break; } } return temp.split(" "); } function getSelectedValues(list){ var len = list.length; var ctr=0; var values = new Array(); for(x=0;x<len;x++){ if(list[x].selected && list[x].value!="-1"){ values[ctr] = list[x].value; ctr++; } } return values; } </script> </body> </html> khalidali63 01-02-2003, 01:27 PM Can you post here or email me all three selections scenarios and their respective values? k_ali@shaw.ca khalidali63 01-02-2003, 05:56 PM :-) Just e-mailed you the updated solution Khalid webdeveloper.com
Copyright Internet.com Inc., All Rights Reserved. |