0

我正在做一些 CF 开发,但我遇到了一个问题。与其把头敲在键盘上,我想我会问一个更有经验的人。

所以这就是我正在处理的事情:

<form name="inv" action="action.cfm" method="post" >

<cfoutput query="getQuery">

<input type="checkbox" name="ischecked" value="1" unchecked />
<input type="Hidden" name="DeviceID" value="#DeviceID#">
</td>

    <td><font size="3"><b>Device ID:</b></font>#DeviceID#</td>
    <td><font size="3"><b>User</b></font>#User#</td>
    <td><font size="3"><b>Tag:</b></font>#Tag#</td>
  </table>
  </cfoutput>
      <table>
          <tr><td> Action: </td>
           <td>

           <select name="choose_action">



            <option value="1"> Action 1 </option>

            <option value="2"> Action 2  </option>

            <option value="3"> Action 3  </option>


        </select>

<INPUT type="reset" name="reset" action="reset">

<INPUT type="submit" name="submit" action="submit">


        </td>
        </tr>

所以基本上我有这个表格,它输出我的查询中的所有信息(工作正常)并循环显示它。我希望用户能够查看此信息,单击特定设备的复选框,并根据底部的菜单执行操作,然后将转到操作页面并使用传入的信息执行查询基于 cfif 循环。

我遇到的问题是我无法弄清楚如何传递我想要用户特别检查的信息,因为它是一个循环。当我提交包含设备 ID 的隐藏字段时,我最终会提交每个具有复选框的设备 ID(即每一个)。复选框值也是如此。它只是将所有查询数据转储到查询中每个设备的操作页面中,而不仅仅是我想要首先检查的一个设备 ID。

我正在考虑一些后端 JS,但我并不完全确定我将如何去做。我希望我可以验证它并在提交之前说:“如果这被选中,那么只提交这个特定的设备 ID”

感谢您的时间和反馈!如果我需要澄清任何事情,请告诉我。

4

2 回答 2

5

这是2个答案(我都看过)。

首先 - 尝试使设备 ID 成为复选框“名称”的一部分。

<cfoutput query="getQuery">

<input type="checkbox" name="ischecked_#deviceID#" value="1" unchecked />

</cfoutput>

然后你会像这样循环表单:

<cfloop collection="#form#" item="fItem">
   <cfif listfirst(fItem,'_') IS 'ischecked'>
      <cfset thisDeviceID = listlast(fItem,'_')>
       ...do something with deviceID
   </cfif>
</cfloop>

第二种方法是将设备 ID 存储在“ischecked”表单字段中,如下所示:

<cfoutput query="getQuery">

<input type="checkbox" name="ischecked" value="#deviceID#" unchecked />

</cfoutput>

这些值作为包含任何已检查内容的列表出现...因此,如果您的用户检查 1、5 和 7,则变量 #form.isChecked# 将是一个看起来像 1、5、7 的列表。使用 listfind 或 cfloop 或其他任何东西来处理它。请记住,您必须使用检查来确保 taht form.isChecked 存在,因为如果未检查任何内容,它将不存在(对于大多数浏览器)。

于 2012-04-18T15:58:25.713 回答
1

有多种方法可以做到这一点,但总体思路是使用动态字段名称和值......

<input type="checkbox" name="ischecked" value="#DeviceID#" />

<select name="choose_action_#DeviceID#">

在 ColdFusion 中,多个同名字段表示为列表

<cfloop query="..">
    <cfif listfindnocase(form.ischecked, DeviceID)>
        <cfif form['choose_action_#DeviceID#'] eq 1>


        <cfelseif form['choose_action_#DeviceID#'] eq 2>

        etc

        </cfif>

    </cfif>
</cfloop>
于 2012-04-18T16:00:16.763 回答