在我的Application.cfc文件中,我设置了this.sameFormFieldsAsArray = True
。
当我转储表单时,我看到数组中的值。如果我想循环访问它们并执行其他操作,我现在如何访问它们?
更新:我正在尝试匹配正在传递的两个表单字段的值。如果form.sched
包含form.bldgarea
,则输出两者的值。这是错误的说明它在位置4找不到任何东西。任何想法我做错了什么?
<cfloop index="i" from="1" to="#arrayLen(form.bldgarea)#">
<cfloop index="i" from="1" to="#arrayLen(form.sched)#">
<cfif #form.sched[i]# contains #form.bldgarea[i]#>
<cfoutput>
#form.sched[i]#, #form.bldgarea[i]#
</cfoutput>
</cfif>
</cfloop>
</cfloop>
答案 0 :(得分:0)
<强>更新强>
如果您在提交时收到错误,我怀疑您遇到了添加到CF9 + Limits the maximum number of POST fields allowed的安全功能。一个简单的选择是增加CF管理员的限制。
另一种可能性是重组表格。将选择列表移到单独的<form>
中,因此不会提交。当用户单击主窗体中的提交按钮时,使用jQuery构建所选项的列表并将其存储在隐藏字段中。与this thread中的方法类似。然后在操作页面上循环访问收到的值列表。
总结评论中的讨论:
最终目标是仅在提取所选
sched
值时 选中关联的bldgarea
框。
我建议采用略有不同的方法。假设您有某种(唯一的)数字 ID来表示每个建筑物,请将其用作复选框&#34;值&#34;而不是建筑物名称。
<input type="checkbox" name="bldgarea" value="#queryName.buildingID#">
然后使用建筑物ID值为每个选择列表生成唯一的名称:
<select name="sched_#queryName.buildingID#">
提交表单后,form.bldgarea
将仅包含所选建筑物的ID。循环遍历该数组并使用关联数组表示法动态获取关联的sched
值。
<cfloop array="#form.bldgarea#" index="variables.buildingID">
<cfoutput>
buildingID = #variables.buildingID#
schedID = #FORM["sched_"& variables.buildingID]#
<br>
</cfoutput>
</cfloop>
NB:只有在检查了某些内容时才会提交复选框。在使用之前一定要验证form.bldgarea
是否存在。