[解决方案:通过将“[]”连接到末尾来将我的名字更改为数组。此外,将我的 ID 更改为唯一值以符合 HTML 规范]
我正在创建一个表单,它有一个复选框矩阵(html 表),每行一个用户,以及用户对列的权限。每个单元格都有一个复选框。一行中的每个复选框都将“名称”设置为用户的电子邮件地址(唯一)。复选框的值是特定权限的 ID。当我单击提交按钮并检查我从 HTTP POST 返回的参数时,只有最右边的复选框被设置为选中了多个复选框的行。
例如,有三个复选框,第一个和第二个选中,第三个未选中。我只取回第二个复选框的 name=id。
我在 Rails 中构建表单,尽管我认为这与实际无关。此外,提供此行为的浏览器是 Chrome、Iceweasel 和 Epiphany...所以我认为这是我的形式。
我的表格摘录:
<tr>
<td>UserOne</td>
<td>one@oreo.com</td>
<td>
<input checked="checked" id="one_oreo.com" name="one@oreo.com" type="checkbox" value="1" />
</td>
<td>
<input id="one_oreo.com" name="one@oreo.com" type="checkbox" value="2" />
</td>
<td>
<input id="one_oreo.com" name="one@oreo.com" type="checkbox" value="3" />
</td>
<td>
<input checked="checked" id="one_oreo.com" name="one@oreo.com" type="checkbox" value="4" />
</td>
<td>
<input id="one_oreo.com" name="one@oreo.com" type="checkbox" value="5" />
</td>
<td>
<input id="one_oreo.com" name="one@oreo.com" type="checkbox" value="6" />
</td>
</tr>
最佳答案
您已将所有这些上的 name=""设置为相同的东西,因此当您勾选多个复选框时,它将替换原来存在的任何值。
要么给每个复选框一个不同的名称,例如name="one@oreo.com_check_1"
或使用 name="one@oreo.com[]"
将它们转换为数组 然后这将存储传递给的所有值它在一个数组中,您可以在提交表单后对其进行处理!
关于HTML 表单复选框未按预期提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9746450/