Solved

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

Posted on 2008-10-01
2
875 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
2 Comments
 
LVL 19

Accepted Solution

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

Author Comment

by:rudodoo
ID: 22618885
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

How our DevOps Teams Maximize Uptime

Our Dev teams are like yours. They’re continually cranking out code for new features/bugs fixes, testing, deploying, responding to production monitoring events and more. It’s complex. So, we thought you’d like to see what’s working for us. Read the use case whitepaper.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

In Part 1 (http://www.experts-exchange.com/Programming/Languages/Scripting/JavaScript/A_7849-Hex-Maze.html) we covered the hexagonal maze basics -- how the cells are represented in a JavaScript array and how the maze is displayed.  In this part, we'…
Hi, Even though I have created this Tutorial on My personal Blog, Some people might not able to find my website, So here i am posting it again Today, from the topic it is very clear that i will be showing you here the very basic usage of how we …
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…

739 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