如何在表单提交时选中或取消选中所有复选框?

时间:2018-01-07 14:33:02

标签: html forms laravel-5 checkbox

我有一个包含多个复选框的表单

<input type="checkbox" name="group_checkbox[]" value="1" />
<input type="checkbox" name="group_checkbox[]" value="1" />
<input type="checkbox" name="group_checkbox[]" value="1" />
<input type="checkbox" name="group_checkbox[]" value="1" />
<input type="checkbox" name="group_checkbox[]" value="1" />

因此,当我单击提交按钮以提交表单时,它只发送选中的复选框。

我在网上搜索,发现我们可以在真正的复选框上方包含隐藏字段,如下所示:

<input type="hidden" name="group_checkbox[]" value="0" />
<input type="checkbox" name="group_checkbox[]" value="1" />
<input type="hidden" name="group_checkbox[]" value="0" />
<input type="checkbox" name="group_checkbox[]" value="1" />
<input type="hidden" name="group_checkbox[]" value="0" />
<input type="checkbox" name="group_checkbox[]" value="1" />
<input type="hidden" name="group_checkbox[]" value="0" />
<input type="checkbox" name="group_checkbox[]" value="1" />
<input type="hidden" name="group_checkbox[]" value="0" />
<input type="checkbox" name="group_checkbox[]" value="1" />

但是当我在var_dump($request->group_checkbox)Laravel Controller显示

array(10) { [0]=> string(1) "0" [1]=> string(1) "1" [2]=> string(1) "0" [3]=> string(1) "1" [4]=> string(1) "0" [5]=> string(1) "1" [6]=> string(1) "0" [7]=> string(1) "1" [8]=> string(1) "0" [9]=> string(1) "1" }

选中所有5个复选框时。

并显示

array(5) { [0]=> string(1) "0" [1]=> string(1) "0" [2]=> string(1) "0" [3]=> string(1) "0" [4]=> string(1) "0" }

没有勾选复选框时。

那么为什么在选中复选框时发送(0和1)而不只是1而不是

1 个答案:

答案 0 :(得分:0)

这就是PHP如何处理以[]结尾的参数的多个值。如果要使用选中的复选框覆盖0值,则需要显式命名索引,否则PHP会将其解释为应附加到数组的值。

因此,请使用grouped_checkboxgrouped_checkbox[0]

像这样:

<input name="grouped_checkbox[0]" type="hidden" value="0">
<input name="grouped_checkbox[0]" type="checkbox" value="1"> <!-- this will overwrite the previous one, if checked -->

<input name="grouped_checkbox[1]" type="hidden" value="0">
<input name="grouped_checkbox[1]" type="checkbox" value="1"> <!-- this will overwrite the previous one, if checked -->

<!-- ... and so forth -->