【问题标题】:Is there an easier way to manipulate checkboxes in coldfusion?有没有更简单的方法来操作coldfusion中的复选框?
【发布时间】:2010-11-05 15:24:28
【问题描述】:

基本上,我已经将信息存储在数据库字段中,我想通过表单再次显示它。

原始表单具有相同的复选框,但它们始终为空。用户可以选中复选框并将值放入数据库中。

研究生课程:秋季?春天?夏天?以列表形式存储在名为 grad 的列中。 (女、男、女)

他们可以选择将这个可爱的表格保存为草稿。当他们回到草稿时,我需要展示他们可能已经检查过的内容。

  <cfif listContains(#grad#, "F") is not 0>
  <input type="checkbox" name="grad" id="grad" value = "F" checked />
  <cfelse>
  <input type="checkbox" name="grad" id="grad" value = "F"  />
  </cfif>
  <cfif listContains(#grad#, "S") is not 0>
  <input name="grad" type="checkbox" id="grad" value = "S" checked />
  <cfelse>
  <input name="grad" type="checkbox" id="grad" value = "S" />
  </cfif>
  <cfif listContains(#grad#, "M") is not 0>
  <input name="grad" type="checkbox" id="grad" value = "M" checked />
  <cfelse>
  <input name="grad" type="checkbox" id="grad" value = "M" />
  </cfif>

有没有更简单的方法可以用 cfform 代码做到这一点?

只是好奇。 :)

【问题讨论】:

    标签: forms coldfusion checkbox cfform


    【解决方案1】:

    我是这样做的,因为我并没有真正使用&lt;cfform&gt;

    <cfloop list="F,S,M" index="g">
      <input type="checkbox" name="grad" id="grad_#g#" value="#g#" #CheckedIf(ListFind(grad, g) gt 0)# />
    </cfloop>
    
    <!--- ... --->
    <cfscript>
      function CheckedIf(expression) {
        if (arguments.expression) return 'checked="checked"';
        return "";
      }
    </cfscript>
    

    但 ColdFusion 文档指出:

    [since] ColdFusion MX:更改了cfform 标签 preserveData 属性行为:如果是 设置为TrueColdFusion 检查 单选和复选框值仅在 它们的值与发布的值匹配 用于控件。

    是的,&lt;cfform&gt; 可以帮助您解决这个问题。使用&lt;cfparam name="FORM.xyz" default="foobar"&gt; 模拟正常请求的“发布值”。

    【讨论】:

    • 嗯,CheckedIf 函数让我很开心。非常感谢! :)
    • @Bri:我以同样的精神(SelectedIf()DisabledIf()ReadonlyIf())制作了许多其他人,它们驻留在我的实用函数库中。
    • @Tomalak 你真的帮了我很多忙! :) 我将开始更频繁地使用 cfscript。我并没有真正使用过它,但我觉得它会让我的代码变得更好。 ^^
    • @Bri:cfscript 有其优点和缺点。它又好又短,但它不是类型安全的,例如更冗长的 会。关于preseveData - 我真的不知道。试试看。我希望如果您以与 FORM 帖子相同的方式准备数据,它可以应对它。请参阅我对&lt;cfparam&gt; 的补充。
    • @Bri - 要查找整个元素,请使用 ListFind/ListFindNoCase 而不是 ListContains。
    猜你喜欢
    • 2014-04-17
    • 1970-01-01
    • 2011-05-05
    • 1970-01-01
    • 1970-01-01
    • 2020-06-06
    • 2019-07-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多