如何访问this.sameFormFieldsAsArray值

时间:2017-03-02 19:26:04

标签: arrays coldfusion coldfusion-10

在我的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>

1 个答案:

答案 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是否存在。