Solved

Dynamic drop down based on another drop down using JavaScript and Coldfusion MX 7

Posted on 2008-10-01
2
863 Views
Last Modified: 2010-10-05
I was trying to populate a dropdown box based on the value from the first dropdown. I'm passing the value from the first dropdown to a javascript function and tried to invoke a CFC function that would populate values based upon the first dropdown. Attached is the code snippet. Any help would be appreciated.
<!--- CFC --->
 

<cffunction name="GetWQuotaUnits" access="public" returntype="any" output="true">

		<cfargument name="CycleDate" required="true">

		

		<cfquery name="qGetWQuotaUnits" datasource="#request.datasource#">

			select distinct units 

			from quotaplan_quotas

			where to_date('#arguments.CycleDate#','mm/dd/yyyy') between effdate and endeffdate

			and product = 'W'

			and recordtype = 'SERVICE'

			and quotaplan in 

    			(select quotaplan from compquotaplan 

   				where to_date('#arguments.CycleDate#','mm/dd/yyyy') between effdate and endeffdate

    			and compplan in 

        			(select compplan from compplans 

        			where to_date('#arguments.CycleDate#','mm/dd/yyyy') between effdate and endeffdate

        			and channel = 'Retail')

    				)

			order by 1

		</cfquery>

		

		<cfif qGetWQuotaUnits.RecordCount NEQ 0>

               <cfset rtnValue = qGetWQuotaUnits>

        <cfelse>

               <cfset rtnValue = "false">

        </cfif>

          

		<cfreturn rtnValue/>

	</cffunction>

	

	<!--- Get PrePaid Quota Units --->

	<cffunction name="GetPQuotaUnits" access="public" returntype="any" output="true">

		<cfargument name="CycleDate" required="true">

		<!--- <cfargument name="PrePaidUnits" required="true"> --->

		

		<cfquery name="qGetPQuotaUnits" datasource="#request.datasource#">

			select distinct units 

			from quotaplan_quotas

			where to_date('#arguments.CycleDate#','mm/dd/yyyy') between effdate and endeffdate

			and product = 'PREPAID'

			and recordtype = 'SERVICE'

			and quotaplan in

				(select distinct quotaplan 

				from quotaplan_quotas

				where to_date('#arguments.CycleDate#','mm/dd/yyyy') between effdate and endeffdate

				and units = '18'

				and product = 'W'

				and recordtype = 'SERVICE'

				and quotaplan in 

					(select quotaplan from compquotaplan 

					where to_date('#arguments.CycleDate#','mm/dd/yyyy') between effdate and endeffdate

					and compplan in 

						(select compplan from compplans 

						where to_date('#arguments.CycleDate#','mm/dd/yyyy') between effdate and endeffdate

						and channel = 'Retail')

					)

				)

			order by 1

		</cfquery>

		

		<cfif qGetPQuotaUnits.RecordCount NEQ 0>

               <cfset rtnValue = qGetPQuotaUnits>

        <cfelse>

               <cfset rtnValue = "false">

        </cfif>

          

		<cfreturn rtnValue/>

	</cffunction>

<!--- JavaScript --->

<script>

function PrePaidChoices(`){

									alert(selWVal);

									//build dropdown for PrePaid

									var ptr = document.StrMQuotaForm.SelPrepaid;

									// kill all current options

									//ptr.options.length = 0;

									//now loop through array creating options and adding

									var tmp = document.createElement("OPTION");

									tmp.value = "";

									txt = document.createTextNode("Select a PrePaid Value");

									tmp.appendChild(txt);

									ptr.appendChild(tmp);

									

									<!--- unitsArray = document.StrMQuotaForm.selPostPay.options[document.StrMQuotaForm.selPostPay.options.selectedIndex].value;

									alert(unitsArray); --->

									

									<cfoutput>

									

									<cfloop query="rtnGetPQuotaUnits">

										tmp = document.createElement("OPTION");

										tmp.value = "#units#";

										alert("units:"+#units#);

										<cfif isdefined('StrMQuotaForm.selPostPay')>

											if('#StrMQuotaForm.selPostPay#' == "#units#")

											{

												tmp.selected = true;

											}

										</cfif>

										txt = document.createTextNode("#units#");

										tmp.appendChild(txt);

										ptr.appendChild(tmp);

									</cfloop>

									</cfoutput>

								}

</script>
 

<!--- form --->
 

<td>

												 <!--- sending text value, product type and total forecast to the js function --->

												 <select name="selPostPay" onChange="PrePaidChoices(this.value);">

												 	<option value="" selected="selected">PostPay Val</option>

													<cfloop query="rtnGetWQuotaUnits">

														<option value="#rtnGetWQuotaUnits.units#">#rtnGetWQuotaUnits.units#</option>

													</cfloop>

												 </select>

											</td>

											<td id="#qStrFTEmp.currentRow#_W_percent">0.0%</td>

											

											<td>

												 <!--- sending text value, product type and total forecast to the js function --->

												 <select name="SelPrepaid">

												 	<option value="" >PrePaid Val</option>

													<!--- <cfloop query="rtnGetPQuotaUnits">

														<option value="#rtnGetPQuotaUnits.units#">#rtnGetPQuotaUnits.units#</option>

													</cfloop> --->

												 </select>

											</td>

											<td id="#qStrFTEmp.currentRow#_PrePaid_percent">0.0%</td>

Open in new window

0
Comment
Question by:rudodoo
2 Comments
 
LVL 19

Accepted Solution

by:
erikTsomik earned 500 total points
Comment Utility
try ot ajacfc, or cfajax frameworks it will save you time
0
 

Author Comment

by:rudodoo
Comment Utility
This is pretty urgent can you take a look at our code and guide me through it.  I'm new to Ajax and I really don't understand it to well.
0

Featured Post

Find Ransomware Secrets With All-Source Analysis

Ransomware has become a major concern for organizations; its prevalence has grown due to past successes achieved by threat actors. While each ransomware variant is different, we’ve seen some common tactics and trends used among the authors of the malware.

Join & Write a Comment

Recently while working on a project I got a very annoying cfdocument has no body error message. I had never seen this error before. So I checked the code. The code was pretty simple; it was Just showing me the cfdocumnt tag and inside that tag a …
Boost your ability to deliver ambitious and competitive web apps by choosing the right JavaScript framework to best suit your project’s needs.
The viewer will learn the basics of jQuery, including how to invoke it on a web page. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery.: (CODE)
The viewer will learn the basics of jQuery including how to code hide show and toggles. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery…

762 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

11 Experts available now in Live!

Get 1:1 Help Now