Look at qForms, there is  n-related javascript functions

http://www.pengoworks.com/qForms/docs/examples/n-related_selectboxes.htm

WG

> -----Original Message-----
> From: Ian Vaughan [mailto:[EMAIL PROTECTED]]
> Sent: 28 November 2002 14:09
> To: CF-Talk
> Subject: Ideas for improving this script?
>
>
> 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.selected
Index].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
Structure your ColdFusion code with Fusebox. Get the official book at 
http://www.fusionauthority.com/bkinfo.cfm

Reply via email to