在未选中的数组中发布复选框

时间:2017-04-21 20:47:44

标签: html forms checkbox

我希望通过POST从一组复选框中获取所有值 - 也包括返回false的复选框。对于单个复选框,有一个解决方案here。这很hacky但它​​至少不需要Javascript。但是这个呢?

<input name="link[]" type="checkbox"/>
<input name="link[]" type="checkbox"/>
...

与其他帖子中建议的类似解决方案不起作用,因为它不断迭代:

<input name="link[]" type="hidden"/>    <!-- 0 -->
<input name="link[]" type="checkbox"/>  <!-- 1 -->
<input name="link[]" type="hidden"/>    <!-- 2 -->
<input name="link[]" type="checkbox"/>  <!-- 3 -->
...

2 个答案:

答案 0 :(得分:2)

我能想到的另一种方法是明确地给它们索引

<input name="link[0]" type="hidden"/> 
<input name="link[0]" type="checkbox"/>  
<input name="link[1]" type="hidden"/>   
<input name="link[1]" type="checkbox"/>
<input name="link[2]" type="hidden"/>
<input name="link[2]" type="checkbox"/>

或者你可以这样做,而不使用隐藏的输入:

<input name="link[0]" type="checkbox"/>  
<input name="link[1]" type="checkbox"/>
<input name="link[2]" type="checkbox"/>

然后检查服务器端是否缺少数组索引。

答案 1 :(得分:0)

提交表单后,为其指定了name属性的所有表单元素都会提交name及其value。对于大多数表单元素,value来自用户输入的内容。

当您提交包含单选按钮和/或复选框的表单时,只有名称/值对形成选中的复选框或单选按钮。这样,您的表单处理代码不必排序检查哪些按钮/框。但结果是,复选框和单选按钮必须为value属性设置value。这个值就是你知道选择了哪个按钮/框的方式(接收checkbox4=true的名称/值对并没有真正告诉你太多。)

在下面的代码中,我们将通过查看提交到表单action的数据来检查哪些复选框已被检查,这些复选框已经过检查,以及这些检查的含义是什么:

<input type="checkbox" name="chkStudent1" value="Mary"> Mary
<input type="checkbox" name="chkStudent2"  value="John"> John
<input type="checkbox" name="chkStudent3"  value="Joe"> Joe

现在,当提交表单时,假设您选中第二个复选框,将提交chkStudent2=John的名称/值对。您的表单处理代码将确切地知道检查了哪个元素,并且该代码可以使用相应的数据。