Solved

How to set cfinput as variable?

Posted on 2008-10-23
8
274 Views
Last Modified: 2013-12-24
Im trying to add some <cfif> statements to my <cfform> via radio button so if someone selects radio button (A) they will see this, if they select radio button (B) they will see something different.

If radio button is not the best way to do this what other option do I have to have an action based event allowing different options for different selections.
<cfparam name="billing_info" type="radio" default="pay_credit">
	Check <cfinput name="billing_info"  type="radio" value="pay_check" />
	Purchase Order <cfinput name="billing_info"  type="radio" value="pay_po" /> 
	Bill Agency <cfinput name="billing_info"  type="radio" value="pay_agency" />
	Voucher <cfinput name="billing_info"  type="radio" value="pay_voucher" />
	Credit Card <cfinput name="billing_info"  type="radio" value="pay_credit" checked="yes"/></td>
    </tr>
  <tr>
    <td colspan="6"><cfif billing_info eq "pay_check">Check <cfelse> -- </cfif></td>

Open in new window

0
Comment
Question by:tribalboy3000
  • 4
  • 2
8 Comments
 
LVL 10

Expert Comment

by:Mr_Nil
ID: 22794890
Remember that ColdFusion is a server-side technology.  What you're trying to do is Client-side.

You would need to enable/disable or make visible/invisible additional fields using javascript via the onChange attribute on the check boxes.  
0
 

Author Comment

by:tribalboy3000
ID: 22796171
Can I have an example of the javascript?
0
 
LVL 25

Accepted Solution

by:
dgrafx earned 500 total points
ID: 22818725
try something like this

<cfparam name="billing_info" default="pay_credit">
<cfset payList="pay_check,pay_po,pay_agency,pay_voucher,pay_credit">
<script>
function doPay(f) {
for(var i=0;i<f.length;i++) {
      if(f[i].checked) {
            document.getElementById(f[i].value).style.display='inline';      
      }
      else {
            document.getElementById(f[i].value).style.display='none';      
      }
}
}
</script>
<cfoutput>
<tr>
<td align="left" width="25%">
<form>
<cfloop list="#payList#" index="ii">
<nobr>
<input name="billing_info" id="billing_info" type="radio" value="#ii#" onclick="doPay(billing_info)"
      <cfif variables.billing_info is ii> checked</cfif> />
#ucase(listlast(ii,"_"))#
</nobr>
<br>
</cfloop>
</form>
</td>

<td align="left">
<cfloop list="#payList#" index="ii">
<div id="#ii#" style="display:<cfif variables.billing_info is ii>inline<cfelse>none</cfif>;">
this is the <b>#ii# payment method</b><br>
put appropriate form fields in here<br>
you can invoke a component that displays the correct fields<br>
cfinvoke component="???" method="getPayFields">
      cfinvokeargument name="payType" value="#ii#"
/cfinvoke
</div>
</cfloop>
</td>
</tr>
</cfoutput>
0
Comprehensive Backup Solutions for Microsoft

Acronis protects the complete Microsoft technology stack: Windows Server, Windows PC, laptop and Surface data; Microsoft business applications; Microsoft Hyper-V; Azure VMs; Microsoft Windows Server 2016; Microsoft Exchange 2016 and SQL Server 2016.

 

Author Comment

by:tribalboy3000
ID: 22824416
Can you please add to your example by showing me an instance of the different form fields that show up when the radios button are selected. I will not be using the component example I need to keep this as simple as possible.
0
 

Author Comment

by:tribalboy3000
ID: 22826097
Okay after some trial and error got the code to work the way I wanted it, Here is the end result.
<cfloop list="#payList#" index="ii">
<nobr>
<cfinput name="billing_info" id="billing_info" type="radio" value="#ii#" onclick="doPay(billing_info)" checked="no" required="yes"/>
#ucase(listlast(ii,"_"))#</nobr>
<br>
</cfloop></td>
    </tr>
  </table>
<div id="pay_check" style="display:<cfif variables.billing_info is pay_check>inline<cfelse>none</cfif>;">
  <table width="70%" border="0" cellpadding="5" cellspacing="3" bgcolor="##FFFFFF" class="body">
    <td colspan="6">Check </td>
  </table>
</div>
<div id="pay_po" style="display:<cfif variables.billing_info is pay_po>inline<cfelse>none</cfif>;">
  <table width="70%" border="0" cellpadding="5" cellspacing="3" bgcolor="##FFFFFF" class="body">
    <td colspan="6">Purchase Order </td>
  </table>
  </div>
<div id="pay_agency" style="display:<cfif variables.billing_info is pay_agency>inline<cfelse>none</cfif>;">
  <table width="70%" border="0" cellpadding="5" cellspacing="3" bgcolor="##FFFFFF" class="body">
    <td colspan="6">Bill Agency </td>
  </table>
  </div>
<div id="pay_voucher" style="display:<cfif variables.billing_info is pay_voucher>inline<cfelse>none</cfif>;">
  <table width="70%" border="0" cellpadding="5" cellspacing="3" bgcolor="##FFFFFF" class="body">
    <td colspan="6">Voucher</td>
 </table>
 </div>

Open in new window

0
 

Author Closing Comment

by:tribalboy3000
ID: 31509423
Thanks for the code samples, it really helped.
0
 
LVL 25

Expert Comment

by:dgrafx
ID: 22826545
I'm glad you got it and good luck ...
0

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

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

This article will give core knowledge of JavaScript and will head in to your first JavaScript program. I am Durvesh Naik and I am here to deal with this series of JavaScript. I will teach you JavaScript in part wise , as its quite boring to read big…
This article discusses how to create an extensible mechanism for linked drop downs.
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…

740 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