Hi
Does anybody have any ideas on how to add a third select box to the current
code below which only deals with two select boxes at the moment. The code
below is taken from
http://www.webtricks.com/sourcecode/source_code.cfm?CodeID=18
It is using Javascript and Coldfusion to build the arrays and would be
interested to know if a third select can be added with the necessary
Coldfusion to add the dynamic capabilities the code below has
<!--- Select the states and area codes. --->
<cfquery datasource="#Request.App.ds#" name="GetStates">
SELECT S.State, S.StateCode, AC.AreaCode
FROM States S, AreaCodes AC
WHERE S.StateCode=AC.StateCode
ORDER BY S.State, AC.AreaCode
</cfquery>
<!--- Select all the area codes. --->
<cfquery datasource="#Request.App.ds#" name="GetCodes">
SELECT AreaCode
FROM AreaCodes
ORDER BY AreaCode
</cfquery>
<script language = "JavaScript">
<!--
// For each state, create an array to hold the area codes.
// Each state array will be identified by the two-character state
abbreviation
<cfoutput query="GetStates" group="State">
// Create the array
StateArray#StateCode# = new Array();
<cfset i = 0>
// Populate the array
<cfoutput>
<cfset i = i + 1>
StateArray#StateCode#[#i#] = #AreaCode#;
</cfoutput>
</cfoutput>
// Function to populate the area codes for the state selected
function PopulateAreaCode() {
// Only process the function if the first item is not selected.
if (document.StateForm.StateCode.selectedIndex != 0) {
// Find the state abbreviation
var ThisState =
document.StateForm.StateCode[document.StateForm.StateCode.selectedIndex].val
ue;
// Set the length of the arecode drop down equal to the length of the
state's array
document.StateForm.AreaCode.length = eval("StateArray" + ThisState +
".length");
// Put 'Select' as the first option in the area code drop-down
document.StateForm.AreaCode[0].value = "";
document.StateForm.AreaCode[0].text = "Select";
document.StateForm.AreaCode[0].selected = true;
// Loop through the state's array and populate the area code drop
down.
for (i=1; i<eval("StateArray" + ThisState + ".length"); i++) {
document.StateForm.AreaCode[i].value = eval("StateArray" +
ThisState + "[i]");
document.StateForm.AreaCode[i].text = eval("StateArray" + ThisState
+ "[i]");
}
}
}
//-->
</script>
<form name="StateForm">
<p>
<table border="0">
<tr>
<td><b>State</b></td>
<td><b>Area Code</b></td>
</tr>
<tr>
<td>
<select name="StateCode" onChange="PopulateAreaCode()">
<option value="0">Select State
<cfoutput query="GetStates" group="State">
<option value="#StateCode#">#State#
</cfoutput>
</select>
</td>
<td>
<select name="AreaCode" width="70" style="width:150" size="1">
<option value="0">Select Area Code
<cfoutput query="GetCodes">
<option value="#AreaCode#">#AreaCode#
</cfoutput>
</select>
</td>
</tr>
</table>
</p>
</form>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
Archives: http://www.houseoffusion.com/cf_lists/index.cfm?forumid=4
Subscription:
http://www.houseoffusion.com/cf_lists/index.cfm?method=subscribe&forumid=4
FAQ: http://www.thenetprofits.co.uk/coldfusion/faq
This list and all House of Fusion resources hosted by CFHosting.com. The place for
dependable ColdFusion Hosting.