HTML表单复选框没有像我期望的那样提交



[解决方案:将"[]"连接到末尾,将我的名称更改为数组。此外,将我的ID更改为唯一值以符合HTML规范]

我正在创建一个表单,它有一个复选框矩阵(html表),每行有一个用户,并且用户对列有权限。每个单元格都有一个复选框。一行中的每个复选框都将"名称"设置为用户的电子邮件地址(唯一)。复选框的值是特定权限的ID。当我单击提交按钮并检查从HTTPPOST返回的params时,只为选中了多个框的行设置了最右边的复选框。

例如,有三个复选框,第一个和第二个复选框已选中,第三个未选中。我只得到第二个复选框的name=id。

我正在Rails中构建表单,尽管我认为这并不是真正相关的。此外,产生这种行为的浏览器是Chrome、Iceweeel和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[]"将它们转换为一个数组。然后,它将把传递给它的所有值存储在一个数组中,然后您可以在提交表单后进行处理!

复选框的名称必须是唯一的。我建议在名称中添加用户id和权限id。此外,您应该相应地更改Ida。id不会影响表单提交,但在HTML中有多个具有相同id的元素是不正确的。

不能将名称param命名为每行相同的值。复选框必须是唯一的,或者至少是一个数组。单选按钮是使用相同名称值的位置。

最新更新