【问题标题】:Dynamic Radio Button Group in ColdfusionColdfusion中的动态单选按钮组
【发布时间】:2011-04-10 19:11:16
【问题描述】:

用户将输入他们的 ID 号,然后将显示与此 ID 号相关的帐户(单选按钮)。他们可能会返回 1 个甚至 10 个帐户(单选按钮)。我需要拥有它们 将他们的帐户更新为 Y、N。帐户 ID 是组成广播组的内容。现在我需要知道谁循环这些单选按钮来查看他们选择了什么。

<cfif isDefined('FORM.bnt2')>
    <cfloop index="i" list="#form.fieldnames#">
        <cfquery  name="accept" datasource="#request.dsn#">
            UPDATE opt SET 
            f14 = '#evaluate(i)#'
            WHERE f4 = '#FORM.id#'
        </cfquery>
    </cfloop>
</cfif>                                                              

<cfform  name="frm2" id="form2" method="post" action="">
    <cfinput type="radio" name="#f5#" value="y"> 
    <cfinput type="radio" name="#f5#" value="n">
    <cfinput type="hidden" name="id" value="#f4#" />
    <cfinput name="bnt2" type="image" class="btn" src="images/accept.gif" value="Submit"/>

【问题讨论】:

  • 表格名称?或字段名称?如果您转储 Form 范围,您应该能够看到其中的所有内容,然后您可以遍历结构或字段名列表来执行您需要的任何操作。
  • 这就是我想要做的... UPDATE opt SET f14 = '#evaluate(i)#' WHERE f4 = '#FORM.ssn#'
  • 为了所有神圣的事物的爱.. 请不要使用#form.SSN# ;) 有很多工具可用于创建适用于一般/不安全表单的唯一标识符。跨度>

标签: loops coldfusion button radio


【解决方案1】:

不要使用评估!

不要使用 cfqueryparam!

并修复那些变量名称,f5btn2 等不是好名称。


无论如何,我不完全确定你在做什么,但这里有一个代码 sn-p 给你:

<cfoutput>
<cfloop index="CurField" list="#Form.FieldNames#">
    <br/>#CurField#=#XmlFormat(Form[CurField])#
</cfloop>
</cfoutput>

这应该为您提供使事情正常运行所需的一切。

注意XmlFormat 用于显示 - 通常不在查询中完成(将数据存储在数据库中),而是在显示到浏览器时完成。 (如果您愿意,也可以使用HtmlEditFormat。)

【讨论】:

  • 如果用户选择 Y 或 N,我需要获取单选按钮的值。字段名称将从数据库中的 id 动态生成以形成单选组。当我尝试 来查找单选按钮的值时,我只会从提交按钮中获取值。
  • 如果两个选项都没有被点击,那么表单结构中将没有任何内容。只有选择了其中一个选项才会显示。
  • 选项都选好了,只是不知道更新数据库的radio字段名,因为每次字段名都不一样()。
  • 除了 jarofclay 所说的,如果必须提供其中一个值,请将默认选项设置为具有 selected 属性。
  • 另外,除了循环,你能不能不这样做:&lt;input type="hidden" name="TheCheckboxIsCalled" value="#f5#"/&gt; ?
【解决方案2】:

感谢大家的帮助,这是我的最终解决方案。

<cfif isDefined("FORM.bnt2")>
<cfloop index="id" list="#form.listofids#" delimiters=",">
<cfquery  name="accept" datasource="#request.dsn#">
UPDATE opt SET
F14 = '#Evaluate("form.select_#id#")#'
WHERE f5 = '#id#'
</cfquery>
</cfloop>
</cfif>


<cfform  name="frm2" id="form2" method="post" action="">
<cfoutput query="accountCheck" >
<cfinput type="radio" name="select_#f5#" value="y" required="yes" validateat="onsubmit" message="A value of Yes or No is required.">
<cfinput type="radio" name="select_#f5#" value="n" required="yes" validateat="onsubmit" message="A value of Yes or No is required.">
<cfinput type="hidden" name="listofids" value="#ValueList(accountCheck.f5)#" >
</cfoutput>
<cfinput name="bnt2" type="image" class="btn" src="images/accept.gif" value="x"  style="float:right;" />
</cfform>

【讨论】:

  • 再看看 Peter Boughton 的建议。您可以进行几项改进。特别是关于 cfqueryparam 的注释。顺便说一句:您真的将 SSN 存储在隐藏字段中吗?
猜你喜欢
  • 1970-01-01
  • 2018-12-25
  • 2011-01-04
  • 2014-02-26
  • 2012-01-04
  • 2011-10-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多