我希望通过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 -->
...
答案 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
的名称/值对。您的表单处理代码将确切地知道检查了哪个元素,并且该代码可以使用相应的数据。