Jon Bredensteiner
asked on
Multiple Related Selects with ColdFusion and JavaScript
I'm trying to modify the code Steve Durette posted at http://tutorial196.easycfm.com/
I got the page working, but only the first dropdown has any data in it. The other two selects just display the initial values; i.e. "Choose Volume" and "Choose PriGroup".
Please help me get the other two selects working. Thank you in advance, Jon
I am a fairly novice ColdFusion developer, and I do not know JavaScript...
p.s. I plan on following up with a second question to address the below text, but the loop may be the reason the 2nd and 3rd selects aren't working, so I figured I would at least explain now:
I only want to have one row of dropdown selects, but Steve Durette's code has a loop in it for 5 rows. I could not figure out how to (correctly) remove the loop, so I just changed the loop to output one row; i.e. <cfloop from="1" to="1" index="Variables.myLoop">
I got the page working, but only the first dropdown has any data in it. The other two selects just display the initial values; i.e. "Choose Volume" and "Choose PriGroup".
Please help me get the other two selects working. Thank you in advance, Jon
I am a fairly novice ColdFusion developer, and I do not know JavaScript...
p.s. I plan on following up with a second question to address the below text, but the loop may be the reason the 2nd and 3rd selects aren't working, so I figured I would at least explain now:
I only want to have one row of dropdown selects, but Steve Durette's code has a loop in it for 5 rows. I could not figure out how to (correctly) remove the loop, so I just changed the loop to output one row; i.e. <cfloop from="1" to="1" index="Variables.myLoop">
<!DOVolPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Multiple three selects related</title>
<CFQUERY DATASOURCE="#Application.DSN#" NAME="getVolumes">
SELECT DISTINCT Impact, Volume, PriGroup
FROM dbo.tblActionItems
GROUP BY Impact, Volume, PriGroup ORDER BY Impact, Volume, PriGroup
</CFQUERY>
<script language="JavaScript">
<!--
//create the initial array to hold the different records.
var aryLocation = new Array();
//Now to bring in the data. This is a combination of
//ColdFusion and JavaScript
<cfset Variables.JSLoop = 0>
<cfoutput>
//The next lines create an array of 3 items in the
//outer array. It could hold more than three items
//if we needed more than 3 selects related.
<cfloop query="getVolumes">
aryLocation[#Variables.JSLoop#] = new Array("#getVolumes.Impact#", "#getVolumes.Volume#", "#getVolumes.PriGroup#");
<cfset Variables.JSLoop = Variables.JSLoop + 1>
</cfloop>
</cfoutput>
function tsrUpdSelects(frstSel, scndSel, thrdSel, thisSel) {
//This function takes four arguments.
/*
They will be the frstSel (the Impact select box), the scndSel (the Volume select box),
the thrdSel (the PriGroup select box) and thisSel (the select box that
actually called for the change to occur).
*/
//local variables
var i; var chkVol = "";
//see if we just changed the first select box (Impact).
if(thisSelect.name == frstSelect.name) {
//set the length of the other selects to zero to empty them
scndSel.options.length = 0;
thrdSel.options.length = 0;
//set the first option for each (being messages to do a select).
scndSel.options[scndSel.length] = new Option("Choose Volume", "");
thrdSel.options[thrdSel.length] = new Option("Choose PriGroup", "");
//Now loop through and set the second option list (Volume).
//If a Impact was chosen. There is also code to prevent duplicate
//cities. This could happen if a Volume had multiple PriGroupes.
if(thisSel.options[thisSel.selectedIndex].value != "") {
for (i = 0; i < aryLocation.length; i++) {
if(aryLocation[I][0] == thisSel.options[thisSel.selectedIndex].value && chkVol.lastIndexOf(aryLocation[i][1] == -1) { scndSel.options[scndSel.length] = new Option(aryLocation[i][1], aryLocation[i][1]); chkVol = chkVol + "," + aryLocation[i][1];
}
}
}
}
//see if we just changed the second select box(Volume).
if(thisSel.name == scndSel.name) {
//set the length of the third select to zero.
thrdSel.options.length = 0;
//set the first option.
thrdSel.options[thrdSel.length] = new Option("Choose PriGroup", "");
//set the rest of the values if a Volume was chosen.
for(i=0; i < aryLocation.length; i++) {
if(aryLocation[i][0] == frstSel.options[frstSel.selectedIndex].value && aryLocation[i][1] == scndSel.options[scndSel.selectedIndex].value) { thrdSel.options[thrdSel.length] = new Option(aryLocation[i][2], aryLocation[i][2])
}
}
}
}
//-->
</script>
</head>
<body>
<cfoutput>
<form method="post" name="testForm">
<table>
<tr>
<th>Impact</th>
<th>Volume</th>
<th>PriGroup</th>
</tr>
<cfloop from="1" to="1" index="Variables.myLoop">
<tr>
<td>
<cfset ImpactList = "">
<select name="myImpact#myLoop#" onChange="tsrUpdSelects(this, testForm.myVolume#myLoop#, testForm.myPriG#myLoop#, this);">
<option value="" selected>Choose Impact</option>
<cfloop query="getVolumes">
<cfif not listFindNoCase(ImpactList, getVolumes.Impact, ",")>
<option value="#getVolumes.Impact#"> #getVolumes.Impact# </option>
<cfset ImpactList = listAppend(ImpactList, getVolumes.Impact, ",")>
</cfif>
</cfloop>
</select>
</td>
<td>
<select name="myVolume#myLoop#" onChange="tsrUpdSelect(testForm.myImpact#myLoop#, this, testForm.myPriG#myLoop#, this);">
<option value="" selected>Choose Volume</option>
</select>
</td>
<td>
<select name="myPriG#myLoop#">
<option value="" selected>Choose PriGroup</option>
</select>
</td>
</tr>
</cfloop>
</table>
</form>
</cfoutput>
</body>
</html>
ASKER
I had found an older version of this, but this one looks like it will work for me much better; now all I have to do is figure out how to use it correctly.
Thank you for the very detailed help! Yesterday I Googled until I couldn't Google anymore, and I never came across this solution ;) I'm sure I'll be writing back very soon :)
Thank you for the very detailed help! Yesterday I Googled until I couldn't Google anymore, and I never came across this solution ;) I'm sure I'll be writing back very soon :)
ASKER
Okay, I used the second half of your post to modify the below code, which I actually extracted from the CF_TwoSelectsRelated.html guide. I am using the TwoSelectsRelated.cfm file as it is posted on Nate Weiss' website.
My issue now is that I need to replace the array with this query somehow:
<!--- Get Volumes by Program Query --->
<CFQUERY NAME="getProgramsVolumes" DATASOURCE="#Application.D SN#">
SELECT tblVolumeList.Volume AS Volume, tblPilotProgramList.Progra m AS Program
FROM tblPilotProgramList INNER JOIN tblVolumeList on tblPilotProgramList.Progra m = tblVolumeList.Program
ORDER BY Program
</CFQUERY>
Can someone help me finish this page please? Thanks, Jon
My issue now is that I need to replace the array with this query somehow:
<!--- Get Volumes by Program Query --->
<CFQUERY NAME="getProgramsVolumes" DATASOURCE="#Application.D
SELECT tblVolumeList.Volume AS Volume, tblPilotProgramList.Progra
FROM tblPilotProgramList INNER JOIN tblVolumeList on tblPilotProgramList.Progra
ORDER BY Program
</CFQUERY>
Can someone help me finish this page please? Thanks, Jon
ASKER
Sorry, I forgot to attach the code...
I actually thought the below code was connecting to the TwoSelectsRelated.cfm file somehow, bur I cannot figure out how it is connecting (I don't think it is connected). Anyways, I'm obviously a noob...
I actually thought the below code was connecting to the TwoSelectsRelated.cfm file somehow, bur I cannot figure out how it is connecting (I don't think it is connected). Anyways, I'm obviously a noob...
<P><B>Example 2</B>
<FORM ACTION="TwoRelatedSelects.cfm" METHOD="Get" onSubmit="return require_SelectOption2();" NAME="OptionsSelectionForm">
<SELECT NAME="SelectOption1" onChange="OptionsSelectionFormChangeMenu()" SIZE="1" >
<OPTION VALUE="" SELECTED>(Select Option 1)
<OPTION VALUE="GEN">General Merchandise
<OPTION VALUE="APP">Apparel/Accessories
<OPTION VALUE="ELE">Consumer Electronics
<OPTION VALUE="AUT">Automotive
<OPTION VALUE="JEW">Jewelry
<OPTION VALUE="FOO">Food & Beverage
<OPTION VALUE="BUS">Business Services
<OPTION VALUE="CMO">Commodities</OPTION></SELECT><BR>
<SELECT NAME="SelectOption2" SIZE="1">
<OPTION VALUE="" SELECTED>(Select Option 2)</SELECT><BR>
<INPUT TYPE="SUBMIT" VALUE="Submit Your Search">
</FORM>
<SCRIPT LANGUAGE="JavaScript1.1">
var maxlength = 10;
OneA = new Array;
var trueLength = OneA.length;
var lst = OneA.length;
<!--- Function: require_SelectOption1() --->
function require_SelectOption1() {
with (document.OptionsSelectionForm.SelectOption1) {
RetVal = true;
if (options[selectedIndex] == null) RetVal = false;
else RetVal = !(options[selectedIndex].value == '');
if (!RetVal) alert('You must choose an option for SelectOption1.');
return RetVal}}
<!--- Function: require_SelectOption2() --->
function require_SelectOption2() {
with (document.OptionsSelectionForm.SelectOption2) {
RetVal = true;
if (options[selectedIndex] == null) RetVal = false;
else RetVal = !(options[selectedIndex].value == '');
if (!RetVal) alert('You must choose an option for SelectOption2.');
return RetVal}}
<!--- Function: require_SelectOption1AndSelectOption2() --->
function require_SelectOption1AndSelectOption2() {
return ((require_SelectOption1()) && (require_SelectOption2()));}
<!--- Function: OptionsSelectionFormChangeMenu() --->
function OptionsSelectionFormChangeMenu() {
OneA.length = 0;
menuNum = document.OptionsSelectionForm.SelectOption1.selectedIndex;
if (menuNum == null) return;
if (menuNum == 1) {
NewOpt = new Array;
NewVal = new Array;
NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[1] = new Option("All General Mdse."); NewOpt[1].value = 'GENALL'; NewOpt[2] = new Option("Arts & Crafts"); NewOpt[2].value = 'GENARS'; NewOpt[3] = new Option("Books & Publications"); NewOpt[3].value = 'GENBOO'; NewOpt[4] = new Option("For Dollar Stores"); NewOpt[4].value = 'GENDOL'; NewOpt[5] = new Option("Giftware"); NewOpt[5].value = 'GENGIF'; NewOpt[6] = new Option("GM Closeouts/Surplus"); NewOpt[6].value = 'GEN-CL'; NewOpt[7] = new Option("Hardware"); NewOpt[7].value = 'GENHAR'; NewOpt[8] = new Option("Health & Beauty Aids"); NewOpt[8].value = 'GENHBA'; NewOpt[9] = new Option("Home Fashion"); NewOpt[9].value = 'GENHOM'; NewOpt[10] = new Option("Housewares"); NewOpt[10].value = 'GENKIT'; NewOpt[11] = new Option("Novelties"); NewOpt[11].value = 'GENNOV'; NewOpt[12] = new Option("Seasonal/Holiday"); NewOpt[12].value = 'GENHOL'; NewOpt[13] = new Option("Sporting Goods"); NewOpt[13].value = 'GENSPO'; NewOpt[14] = new Option("Toys/Games"); NewOpt[14].value = 'GENTOY'; NewOpt[15] = new Option("Adult Merchandise"); NewOpt[15].value = 'GENALT'; NewOpt[16] = new Option("Other"); NewOpt[16].value = 'GENOTH';}
if (menuNum == 2) {
NewOpt = new Array;
NewVal = new Array;
NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[1] = new Option("All Apparel/Access."); NewOpt[1].value = 'APPALL'; NewOpt[2] = new Option("Apparel Closeouts"); NewOpt[2].value = 'APP-CL'; NewOpt[3] = new Option("Boys Accessories"); NewOpt[3].value = 'APPBAC'; NewOpt[4] = new Option("Boys Apparel"); NewOpt[4].value = 'APPBOY'; NewOpt[5] = new Option("Fabric/Textiles"); NewOpt[5].value = 'APPFAB'; NewOpt[6] = new Option("Girls Accessories"); NewOpt[6].value = 'APPGAC'; NewOpt[7] = new Option("Girls Apparel"); NewOpt[7].value = 'APPGIR'; NewOpt[8] = new Option("Infant Accessories"); NewOpt[8].value = 'APPIAC'; NewOpt[9] = new Option("Infant Apparel"); NewOpt[9].value = 'APPINF'; NewOpt[10] = new Option("Mens Accessories"); NewOpt[10].value = 'APPMAC'; NewOpt[11] = new Option("Mens Apparel"); NewOpt[11].value = 'APPMEN'; NewOpt[12] = new Option("Uniforms/Workclothes"); NewOpt[12].value = 'APPUNI'; NewOpt[13] = new Option("Womens Accessories"); NewOpt[13].value = 'APPWAC'; NewOpt[14] = new Option("Womens Apparel"); NewOpt[14].value = 'APPWOM';}
if (menuNum == 3) {
NewOpt = new Array;
NewVal = new Array;
NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[1] = new Option("All Electronics"); NewOpt[1].value = 'ELEALL'; NewOpt[2] = new Option("Appliances"); NewOpt[2].value = 'ELEAPP'; NewOpt[3] = new Option("Audio"); NewOpt[3].value = 'ELEAUD'; NewOpt[4] = new Option("Automotive"); NewOpt[4].value = 'ELEAUT'; NewOpt[5] = new Option("Communications"); NewOpt[5].value = 'ELECOM'; NewOpt[6] = new Option("Computer Software"); NewOpt[6].value = 'ELECPS'; NewOpt[7] = new Option("Computers"); NewOpt[7].value = 'ELECPU'; NewOpt[8] = new Option("Electronic Closeouts"); NewOpt[8].value = 'ELE-CL'; NewOpt[9] = new Option("Electronics"); NewOpt[9].value = 'ELEELE'; NewOpt[10] = new Option("Entertainment"); NewOpt[10].value = 'ELEENT'; NewOpt[11] = new Option("Photographic"); NewOpt[11].value = 'ELECAM'; NewOpt[12] = new Option("Small/Home Office"); NewOpt[12].value = 'ELEOFF'; NewOpt[13] = new Option("Telephone"); NewOpt[13].value = 'ELETEL'; NewOpt[14] = new Option("Video"); NewOpt[14].value = 'ELEVID';}
if (menuNum == 4) {
NewOpt = new Array;
NewVal = new Array;
NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[1] = new Option("All Automotive"); NewOpt[1].value = 'AUTALL'; NewOpt[2] = new Option("Accessories"); NewOpt[2].value = 'AUTACC'; NewOpt[3] = new Option("Add-Ons"); NewOpt[3].value = 'AUTADD'; NewOpt[4] = new Option("Batteries"); NewOpt[4].value = 'AUTBAT'; NewOpt[5] = new Option("Buy Backs/Over Stock"); NewOpt[5].value = 'AUT-CL'; NewOpt[6] = new Option("Chemicals"); NewOpt[6].value = 'AUTCHE'; NewOpt[7] = new Option("Electronics"); NewOpt[7].value = 'AUTELE'; NewOpt[8] = new Option("Lubicants"); NewOpt[8].value = 'AUTLUB'; NewOpt[9] = new Option("Marine"); NewOpt[9].value = 'AUTMAR'; NewOpt[10] = new Option("Motorcycles"); NewOpt[10].value = 'AUTMOT'; NewOpt[11] = new Option("Recreational Vehicle"); NewOpt[11].value = 'AUTREC'; NewOpt[12] = new Option("Replacement Parts"); NewOpt[12].value = 'AUTREP'; NewOpt[13] = new Option("Shop Equipment"); NewOpt[13].value = 'AUTSHO'; NewOpt[14] = new Option("Sound"); NewOpt[14].value = 'AUTAUD'; NewOpt[15] = new Option("Tires"); NewOpt[15].value = 'AUTTIR'; NewOpt[16] = new Option("Tools"); NewOpt[16].value = 'AUTTOO'; NewOpt[17] = new Option("Trucks"); NewOpt[17].value = 'AUTTRU';}
if (menuNum == 5) {
NewOpt = new Array;
NewVal = new Array;
NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[1] = new Option("All Jewelry"); NewOpt[1].value = 'JEWALL'; NewOpt[2] = new Option("Costume Jewelry"); NewOpt[2].value = 'JEWCOS'; NewOpt[3] = new Option("Fine Jewelry"); NewOpt[3].value = 'JEWFIN'; NewOpt[4] = new Option("Gemstones & Minerals"); NewOpt[4].value = 'JEWGEM'; NewOpt[5] = new Option("Specialty / Custom"); NewOpt[5].value = 'JEWCUS';}
if (menuNum == 6) {
NewOpt = new Array;
NewVal = new Array;
NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[1] = new Option("All Foods"); NewOpt[1].value = 'FOOALL'; NewOpt[2] = new Option("Alcoholic Beverages"); NewOpt[2].value = 'FOOALC'; NewOpt[3] = new Option("Food Surplus"); NewOpt[3].value = 'FOO-CL'; NewOpt[4] = new Option("Health & Nutrition"); NewOpt[4].value = 'FOOHEA'; NewOpt[5] = new Option("Non-Alcoholic Bev."); NewOpt[5].value = 'FOOBEV'; NewOpt[6] = new Option("Packaged Foods"); NewOpt[6].value = 'FOOPAC'; NewOpt[7] = new Option("Perishables"); NewOpt[7].value = 'FOOPER'; NewOpt[8] = new Option("Unpackaged Foods"); NewOpt[8].value = 'FOOUNP';}
if (menuNum == 7) {
NewOpt = new Array;
NewVal = new Array;
NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[1] = new Option("All Business Svcs."); NewOpt[1].value = 'BUSALL'; NewOpt[2] = new Option("Advertising Services"); NewOpt[2].value = 'BUSADV'; NewOpt[3] = new Option("Architectural Svcs."); NewOpt[3].value = 'BUSARC'; NewOpt[4] = new Option("Business Opportunity"); NewOpt[4].value = 'BUSOPP'; NewOpt[5] = new Option("Copy Services"); NewOpt[5].value = 'BUSCOP'; NewOpt[6] = new Option("Employment Services"); NewOpt[6].value = 'BUSEMP'; NewOpt[7] = new Option("Entertainment Svcs."); NewOpt[7].value = 'BUSENT'; NewOpt[8] = new Option("Financial Services"); NewOpt[8].value = 'BUSFIN'; NewOpt[9] = new Option("Legal Services"); NewOpt[9].value = 'BUSLEG'; NewOpt[10] = new Option("Premiums"); NewOpt[10].value = 'BUSPRE'; NewOpt[11] = new Option("Promotional Services"); NewOpt[11].value = 'BUSPRO'; NewOpt[12] = new Option("Real Estate Services"); NewOpt[12].value = 'BUSREA';}
if (menuNum == 8) {
NewOpt = new Array;
NewVal = new Array;
NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[0] = new Option("(Select Option 2)"); NewOpt[0].value = ''; NewOpt[1] = new Option("All Commodities"); NewOpt[1].value = 'CMOALL'; NewOpt[2] = new Option("Exchange/Currency"); NewOpt[2].value = 'CMOCUR'; NewOpt[3] = new Option("Ores/Minerals/Metals"); NewOpt[3].value = 'CMOORE'; NewOpt[4] = new Option("Precious Metals"); NewOpt[4].value = 'CMOPRE'; NewOpt[5] = new Option("Tobacco"); NewOpt[5].value = 'CMOTOB';}
tot = NewOpt.length;
lst = document.OptionsSelectionForm.SelectOption2.options.length;
for (i = lst; i > 0; i--) {
document.OptionsSelectionForm.SelectOption2.options[i] = null;}
for (i = 0; i < tot; i++) {
document.OptionsSelectionForm.SelectOption2.options[i] = NewOpt[i];}
document.OptionsSelectionForm.SelectOption2.options[0].SelectOption2 = true;
}
<!--- End Function: OptionsSelectionFormChangeMenu() --->
</SCRIPT>
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Man, I should have stayed at work a little longer on Saturday night / Sunday morning; I worked from noon on Saturday until 5:30am Sunday morning trying to figure this all out... Anyways, yes I thought I was going to need to do three selects, but I got it down to two selects.
Okay, now I see what I was doing wrong with the two selects. I was trying to modify the html file that is included in the twoselectsrelated group of files, but I should have only been monkeying around with the TwoSelectsRelated_Test_CF4 0_And_Up.c fm file.
Well that is fairly straightforward. I'll try it out with my data right now.
p.s. I would like to move the TwoSelectsRelated.cfm and the CF_TwoSelectsRelated.html file into a sub folder named "DynamicSelects", but it doesn't work when I move them. I've tried changing the code in "" to the below, but no love...
DynamicSelects/CF_TwoSelec tsRelated
DynamicSelects/CF_TwoSelec tsRelated. html
"DynamicSelects/CF_TwoSele ctsRelated .html"
None of the above work to call the custom tag
Thanks again, Jon
Okay, now I see what I was doing wrong with the two selects. I was trying to modify the html file that is included in the twoselectsrelated group of files, but I should have only been monkeying around with the TwoSelectsRelated_Test_CF4
Well that is fairly straightforward. I'll try it out with my data right now.
p.s. I would like to move the TwoSelectsRelated.cfm and the CF_TwoSelectsRelated.html file into a sub folder named "DynamicSelects", but it doesn't work when I move them. I've tried changing the code in "" to the below, but no love...
DynamicSelects/CF_TwoSelec
DynamicSelects/CF_TwoSelec
"DynamicSelects/CF_TwoSele
None of the above work to call the custom tag
Thanks again, Jon
<!--- Create a query to feed to the custom tag... --->
<!--- Normally, this would probably be a CFQUERY --->
<CFSCRIPT>
q = QueryNew("Val1,Val2,Disp1,Disp2");
QueryAddRow(q, 12);
q["Val1"][1] = "1"; q["Disp1"][1] = "Times"; q["Val2"][1] = "1"; q["Disp2"][1] = "Noon";
q["Val1"][2] = "1"; q["Disp1"][2] = "Times"; q["Val2"][2] = "2"; q["Disp2"][2] = "Midnight";
q["Val1"][3] = "1"; q["Disp1"][3] = "Times"; q["Val2"][3] = "3"; q["Disp2"][3] = "Dawn";
q["Val1"][4] = "2"; q["Disp1"][4] = "People"; q["Val2"][4] = "10"; q["Disp2"][4] = """Mira"" Sorvino";
q["Val1"][5] = "2"; q["Disp1"][5] = "People"; q["Val2"][5] = "11"; q["Disp2"][5] = "Stephanie Hawkins' Fox";
q["Val1"][6] = "2"; q["Disp1"][6] = "People"; q["Val2"][6] = "12"; q["Disp2"][6] = "Brad Pitt";
q["Val1"][7] = "2"; q["Disp1"][7] = "People"; q["Val2"][7] = "13"; q["Disp2"][7] = "Amanda Jones";
q["Val1"][8] = "3"; q["Disp1"][8] = "Animals"; q["Val2"][8] = "31"; q["Disp2"][8] = "Elephant";
q["Val1"][9] = "3"; q["Disp1"][9] = "Animals"; q["Val2"][9] = "32"; q["Disp2"][9] = "Kitty Cat";
q["Val1"][10] = "3"; q["Disp1"][10] = "Animals"; q["Val2"][10] = "33"; q["Disp2"][10] = "Giraffe";
q["Val1"][11] = "3"; q["Disp1"][11] = "Animals"; q["Val2"][11] = "34"; q["Disp2"][11] = "New York City Rat";
q["Val1"][12] = "3"; q["Disp1"][12] = "Animals"; q["Val2"][12] = "35"; q["Disp2"][12] = "Kangaroo";
</CFSCRIPT>
<FORM>
<DynamicSelects/CF_TwoSelectsRelated.cfm
Name1="BigCat"
Name2="SubCat"
Query="q"
Value1="Val1"
Value2="Val2"
Display1="Disp1"
Display2="Disp2"
Default1="2"
Default2="11"
ForceWidth2="20"
ExtraOptions2="5">
</FORM>
ASKER
Okay, I got it working with my Query (1st code below); however, I cannot figure out how to devide up the two cells into my original form (2nd code below). I tried inserting the code into my form, but it always errors.
I'm not sure if this is a seperat question, but I can submit another question if requested. Thanks, Jon
I'm not sure if this is a seperat question, but I can submit another question if requested. Thanks, Jon
<!--- This code works great --->
<CFQUERY NAME="getVolumes" DATASOURCE="EvtSpatial">
SELECT tblVolumeList.Volume AS Volume, tblVolumeList.Program AS VProgram, tblPilotProgramList.Program AS Program
FROM tblPilotProgramList LEFT JOIN tblVolumeList on tblPilotProgramList.Program = tblVolumeList.Program
ORDER BY Program
</CFQUERY>
<FORM ACTION="" METHOD="GET">
<CF_TwoSelectsRelated
Name1="Program"
Name2="Volume"
Query="getVolumes"
Value1="Program"
Value2="Volume"
Display1="Program"
Display2="Volume"
EMPTYTEXT1="Choose a Program"
EMPTYTEXT2="Choose a Volume">
<INPUT TYPE="SUBMIT">
</FORM>
<!--- I need to change the below "Program" and the "Volume" Input cells to use the above custom tagecode--->
<CFFORM METHOD="Get" NAME="ActionForm">
<TABLE BORDER="1" WIDTH="*" cellpadding=5 cellspacing=0 BORDERCOLOR="black" CLASS="left">
<TR>
<TH nowrap="nowrap" VALIGN="middle" ALIGN="center"class="required" colspan=3>MEETING INFORMATION </TH>
</TR>
<TR>
<TD nowrap="nowrap" WIDTH="*" VALIGN="middle" ALIGN="center" CLASS="headerrow">Program</TD>
<TD nowrap="nowrap" WIDTH="*" VALIGN="middle" ALIGN="center" CLASS="headerrow">Volume</TD>
<TD nowrap="nowrap" WIDTH="*" VALIGN="middle" ALIGN="center" CLASS="headerrow" colspan=1>Meeting Date</TD>
</TR>
<TR>
<TD nowrap="nowrap" WIDTH="*" VALIGN="middle" ALIGN="center" CLASS="normal" >
<SELECT NAME="SelectProgram" ID="SelectProgram" TABINDEX="1">
<OPTION>Program Selection</OPTION>
<CFOUTPUT QUERY="getProgramVolume">
<OPTION VALUE="#Program#">#Program#</OPTION>
</CFOUTPUT>
</SELECT>
</TD>
<TD nowrap="nowrap" WIDTH="*" VALIGN="middle" ALIGN="center" CLASS="normal" >
<SELECT NAME="SelectVolume" ID="SelectVolume" TABINDEX="2">
<OPTION>Volume Selection</OPTION>
<CFOUTPUT QUERY="getProgramVolume">
<OPTION VALUE="#Volume#">#Volume#</OPTION>
</CFOUTPUT>
</SELECT>
</TD>
<TD nowrap="nowrap" WIDTH="*" VALIGN="middle" ALIGN="center" CLASS="normal">
<INPUT TABINDEX="3" TYPE="text" NAME="SelectDate" ID="SelectDate" SIZE="15" onFocus="getCalendarFor(this); this.blur()" CLASS="textfield">
</TD>
</TR>
<TR>
<TD nowrap="nowrap" WIDTH="*" VALIGN="middle" ALIGN="center" CLASS="headerrow">Action</TD>
<TD nowrap="nowrap" WIDTH="*" VALIGN="middle" ALIGN="left" CLASS="normal" COLSPAN="2">
<SELECT NAME="SelectAction" ID="SelectAction" TABINDEX="4">
<OPTION>Attendance Tracking Options List</OPTION>
<CFOUTPUT QUERY="getActions">
<OPTION VALUE="#AttFormActionURL#">#AttFormAction#</OPTION>
</CFOUTPUT>
</SELECT>
</TD>
</TR>
<TR>
<TH CLASS="required" colspan=3>
<INPUT TYPE="submit" NAME="Continue" VALUE="Continue >>>" onClick="checkForm(this.form);">
</TH>
</TR>
</TABLE>
</CFFORM>
ASKER
Okay, I finally figured it out... Here is my solution in case anyone else ever comes looking for it, but don't forget to download the two (TwoSelectsRelated) files from: http://www.geocities.com/thanny/#Code
<!-------------------------------------------------- JavaScript -------------------------------------------------->
<!-- JavaScript: Create calendar buttons -->
<script language="JavaScript">
function ShowCalendar(FormName, FieldName)
{window.open("DatePopup.cfm?FormName=" + FormName + "&FieldName=" + FieldName, "CalendarWindow", "width=250,height=250");}
</script>
<!-- JavaScript: Error Checking - Check Form Fields for Values -->
<script type="text/javascript">
var checkForm = function(objForm){
if (objForm.SelectProgram.value=="" || objForm.SelectProgram.value=="Program Selection") {
alert("Please select the Program.");
return false;
} else if (objForm.SelectVolume.value=="" || objForm.SelectVolume.value=="Volume Selection") {
alert("Please select the Volume.");
return false;
} else if (objForm.SelectDate.value=="") {
alert("Please select a Meeting Date.");
return false;
} else if (objForm.SelectAction.value=="" || objForm.SelectAction.value=="Attendance Tracking Options List") {
alert("Please select an Action.");
return false;
} else {
document.ActionForm.action = objForm.SelectAction.value;
}
};
</script>
<!-- JavaScript: Dynamically Select the ActionForm's New ActionURL -->
<script type="text/javascript">
function OnSubmitActionForm(NewActionURL)
{
document.ActionForm.action = NewActionURL.value;
}
// Put the following code in the submit button's code: onClick="OnSubmitActionForm(this.form.SelectAction);"
</script>
<!-- Call PopupDate JavaScript -->
<SCRIPT LANGUAGE="JavaScript" SRC="_scripts/PopupDate.js"></SCRIPT>
<!-- ? -->
<SCRIPT LANGUAGE="javascript1.2" SRC="_scripts/javascript.js" TYPE="text/javascript"></SCRIPT>
<!-------------------- End JavaScript -------------------->
<!-------------------------------------------------- Data Queries -------------------------------------------------->
<!-- Query: Get Volumes by Program -->
<CFQUERY NAME="getProgramVolume" DATASOURCE="EvtSpatial">
SELECT tblPilotProgramList.Program AS Program, tblVolumeList.Volume AS Volume, tblVolumeList.Program AS VProgram
FROM tblPilotProgramList LEFT JOIN tblVolumeList on tblPilotProgramList.Program = tblVolumeList.Program
ORDER BY Program
</CFQUERY>
<!-- Query: Get Action Options -->
<CFQUERY NAME="getActions" DATASOURCE="EvtSpatial">
SELECT AttFormActionID, AttFormAction, AttFormActionURL
FROM tblListAttFormAction
ORDER BY AttFormAction
</CFQUERY>
<!-------------------- End Data Queries -------------------->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
<TITLE>Untitled Document</TITLE>
</HEAD>
<BODY>
<CFFORM METHOD="Get" NAME="ActionForm">
<TABLE BORDER="1" WIDTH="*" cellpadding=5 cellspacing=0 BORDERCOLOR="black" CLASS="left">
<TR>
<TH nowrap="nowrap" VALIGN="middle" ALIGN="center"class="required" colspan=3>MEETING INFORMATION </TH>
</TR>
<TR>
<TD nowrap="nowrap" WIDTH="*" VALIGN="middle" ALIGN="center" CLASS="headerrow">Program</TD>
<TD nowrap="nowrap" WIDTH="*" VALIGN="middle" ALIGN="center" CLASS="headerrow">Volume</TD>
<TD nowrap="nowrap" WIDTH="*" VALIGN="middle" ALIGN="center" CLASS="headerrow" colspan=1>Meeting Date</TD>
</TR>
<TR>
<TD nowrap="nowrap" WIDTH="*" VALIGN="middle" ALIGN="center" CLASS="normal" colspan="1" >
<CF_TwoSelectsRelated
Name1="SelectProgram"
Name2="SelectVolume"
Query="getProgramVolume"
Value1="Program"
Value2="Volume"
Display1="Program"
Display2="Volume"
EMPTYTEXT1="Choose a Program"
EMPTYTEXT2="Choose a Volume"
FORMNAME="ActionForm"
HTMLBETWEEN="</TD><TD>">
</TD>
<TD nowrap="nowrap" WIDTH="*" VALIGN="middle" ALIGN="center" CLASS="normal">
<INPUT TABINDEX="3" TYPE="text" NAME="SelectDate" ID="SelectDate" SIZE="15" onFocus="getCalendarFor(this); this.blur()" CLASS="textfield">
</TD>
</TR>
<TR>
<TD nowrap="nowrap" WIDTH="*" VALIGN="middle" ALIGN="center" CLASS="headerrow">Action</TD>
<TD nowrap="nowrap" WIDTH="*" VALIGN="middle" ALIGN="left" CLASS="normal" COLSPAN="2">
<SELECT NAME="SelectAction" ID="SelectAction" TABINDEX="4">
<OPTION>Attendance Tracking Options List</OPTION>
<CFOUTPUT QUERY="getActions">
<OPTION VALUE="#AttFormActionURL#">#AttFormAction#</OPTION>
</CFOUTPUT>
</SELECT>
</TD>
</TR>
<TR>
<TH CLASS="required" colspan=3>
<INPUT TYPE="submit" NAME="Continue" VALUE="Continue >>>" onClick="checkForm(this.form);">
</TH>
</TR>
</TABLE>
</CFFORM>
<!-------------------------------------------------- JavaScript -------------------------------------------------->
<!-- Calendar PopupDate JavaScript Formatting and Scripting -->
<SCRIPT LANGUAGE="JavaScript">
if (document.all) {
document.writeln("<div id=\"PopUpCalendar\" style=\"position:absolute; left:0px; top:0px; z-index:7; width:200px; height:77px; overflow: visible; visibility: hidden; background-color: #FFFFFF; border: 1px none #000000\" onMouseOver=\"if(ppcTI){clearTimeout(ppcTI);ppcTI=false;}\" onMouseOut=\"ppcTI=setTimeout(\'hideCalendar()\',500)\">");
document.writeln("<div id=\"monthSelector\" style=\"position:absolute; left:0px; top:0px; z-index:9; width:181px; height:27px; overflow: visible; visibility:inherit\">");}
else if (document.layers) {
document.writeln("<layer id=\"PopUpCalendar\" pagex=\"0\" pagey=\"0\" width=\"200\" height=\"200\" z-index=\"100\" visibility=\"hide\" bgcolor=\"#FFFFFF\" onMouseOver=\"if(ppcTI){clearTimeout(ppcTI);ppcTI=false;}\" onMouseOut=\"ppcTI=setTimeout('hideCalendar()',500)\">");
document.writeln("<layer id=\"monthSelector\" left=\"0\" top=\"0\" width=\"181\" height=\"27\" z-index=\"9\" visibility=\"inherit\">");}
else {
document.writeln("<p><font color=\"#FF0000\"><b>Error ! The current browser is either too old or too modern (usind DOM document structure).</b></font></p>");}
</SCRIPT>
<!-- Checks to See if JavaScript is Enabled -->
<NOSCRIPT><P><FONT COLOR="#FF0000"><B>JavaScript is not activated !</B></FONT></P></NOSCRIPT>
<TABLE BORDER="1" CELLSPACING="1" CELLPADDING="2" WIDTH="200" BORDERCOLORLIGHT="#000000" BORDERCOLORDARK="#000000" VSPACE="0" HSPACE="0"><FORM NAME="ppcMonthList"><TR><TD ALIGN="center" BGCOLOR="#CCCCCC"><A HREF="javascript:moveMonth('Back')" onMouseOver="window.status=' ';return true;"><FONT FACE="Arial, Helvetica, sans-serif" SIZE="2" COLOR="#000000"><B>< </B></FONT></A><FONT FACE="MS Sans Serif, sans-serif" SIZE="1">
<SELECT NAME="sItem" ONMOUSEOUT="if(ppcIE){window.event.cancelBubble = true;}" onChange="switchMonth(this.options[this.selectedIndex].value)" STYLE="font-family: 'MS Sans Serif', sans-serif; font-size: 9pt"><OPTION VALUE="0" SELECTED>2000 " January</OPTION><OPTION VALUE="1">2000 " February</OPTION><OPTION VALUE="2">2000 " March</OPTION><OPTION VALUE="3">2000 " April</OPTION><OPTION VALUE="4">2000 " May</OPTION><OPTION VALUE="5">2000 " June</OPTION><OPTION VALUE="6">2000 " July</OPTION><OPTION VALUE="7">2000 " August</OPTION><OPTION VALUE="8">2000 " September</OPTION><OPTION VALUE="9">2000 " October</OPTION><OPTION VALUE="10">2000 " November</OPTION><OPTION VALUE="11">2000 " December</OPTION><OPTION VALUE="0">2001 " January</OPTION></SELECT></FONT><A HREF="javascript:moveMonth('Forward')" onMouseOver="window.status=' ';return true;"><FONT FACE="Arial, Helvetica, sans-serif" SIZE="2" COLOR="#000000"><B> ></B></FONT></A></TD></TR></FORM></TABLE>
<TABLE BORDER="1" CELLSPACING="1" CELLPADDING="2" BORDERCOLORLIGHT="#000000" BORDERCOLORDARK="#000000" WIDTH="200" VSPACE="0" HSPACE="0"><TR ALIGN="center" BGCOLOR="#CCCCCC"><TD WIDTH="20" BGCOLOR="#FFFFCC"><B><FONT FACE="MS Sans Serif, sans-serif" SIZE="1">Su</FONT></B></TD><TD WIDTH="20"><B><FONT FACE="MS Sans Serif, sans-serif" SIZE="1">Mo</FONT></B></TD><TD WIDTH="20"><B><FONT FACE="MS Sans Serif, sans-serif" SIZE="1">Tu</FONT></B></TD><TD WIDTH="20"><B><FONT FACE="MS Sans Serif, sans-serif" SIZE="1">We</FONT></B></TD><TD WIDTH="20"><B><FONT FACE="MS Sans Serif, sans-serif" SIZE="1">Th</FONT></B></TD><TD WIDTH="20"><B><FONT FACE="MS Sans Serif, sans-serif" SIZE="1">Fr</FONT></B></TD><TD WIDTH="20" BGCOLOR="#FFFFCC"><B><FONT FACE="MS Sans Serif, sans-serif" SIZE="1">Sa</FONT></B></TD></TR></TABLE>
<SCRIPT LANGUAGE="JavaScript">
if (document.all) {
document.writeln("</div>");
document.writeln("<div id=\"monthDays\" style=\"position:absolute; left:0px; top:52px; z-index:8; width:200px; height:17px; overflow: visible; visibility:inherit; background-color: #FFFFFF; border: 1px none #000000\"> </div></div>");}
else if (document.layers) {
document.writeln("</layer>");
document.writeln("<layer id=\"monthDays\" left=\"0\" top=\"52\" width=\"200\" height=\"17\" z-index=\"8\" bgcolor=\"#FFFFFF\" visibility=\"inherit\"> </layer></layer>");}
else {/*NOP*/}
</SCRIPT>
<!-- End Calendar PopupDate JavaScript Formatting and Scripting -->
<!-------------------- End JavaScript -------------------->
</BODY>
</HTML>
ASKER
Thank you for pointing me in the right direction galadore. I posted my final solution. Thanks, Jon
Open in new window