2010-11-05 107 views
1

基本上,我已将信息存储在数据库字段中,并且我想通过表单再次显示它。有没有一种更简单的方法来操纵Coldfusion中的复选框?

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

研究生课程:秋季?弹簧?夏季?作为名为grad的列存储为列表。 (F,M,S)

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

<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代码这样更简单的方法?

只是好奇。 :)

回答

3

我不喜欢这样,因为我真的不使用<cfform>

<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的文档状态:

[因为] ColdFusion MX的:改变了cfform标签 preserveData属性行为:如果它 设置为True,ColdFusion检查 无线电和复选框值仅当 它们的值与控件的发布值 相匹配。

所以是的,<cfform>可以帮助你做到这一点。使用<cfparam name="FORM.xyz" default="foobar">来模拟正常请求的“发布价值”。

+1

嗯,CheckedIf功能只是让我的一天。谢谢一堆! :) – Bri 2010-11-05 15:41:12

+0

@Bri:我以同样的精神('SelectedIf()','DisabledIf()','ReadonlyIf()')创建了一堆其他实体函数库。 – Tomalak 2010-11-05 15:50:48

+0

@docs评论:它会与列表数据? – Bri 2010-11-05 15:51:25

相关问题