Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 881
  • Last Modified:

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

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
rudodoo
Asked:
rudodoo
1 Solution
 
erikTsomikSystem Architect, CF programmer Commented:
try ot ajacfc, or cfajax frameworks it will save you time
0
 
rudodooAuthor Commented:
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

Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now