数组仅存储值为 1(非 0)的复选框 [重复]
Posted
技术标签:
【中文标题】数组仅存储值为 1(非 0)的复选框 [重复]【英文标题】:array only storing checkboxes with value 1 (not 0) [duplicate] 【发布时间】:2017-07-19 22:03:32 【问题描述】:我有使用 javascript 更改值的复选框,我想将所有复选框的值存储在 php 数组中。但是如果用户将一个复选框的值更改为“0”,则创建的数组只有 2 个值 (1,1) 而不是 (1,0,1)。
<input type="checkbox" name="cbox1[]" checked="checked" value="1" class="chbo">
<input type="checkbox" name="cbox1[]" checked="checked" value="1" class="chbo">
<input type="checkbox" name="cbox1[]" checked="checked" value="1" class="chbo">
PHP
$wer=$_POST['cbox1'];
echo implode(",",$wer);
jQuery
$(document).on('click', '.chbo', function()
this.value ^= 1;
console.log(this.value);
);
【问题讨论】:
只发送选中的值。未检查的值不会出现在 POST 数组中。 那么我如何发布值为“0”的未选中复选框? 不,您的代码运行良好。谢谢。 你应该接受一个答案。 我该怎么做?我是新来的。 【参考方案1】:仅提交成功(检查)的控件。您需要在复选框之前添加一个具有默认值的隐藏输入。请注意,您需要对索引进行硬编码,以便隐藏的默认值与复选框值匹配:
<input type="hidden" name="cbox1[0]" value="0" class="chbo">
<input type="checkbox" name="cbox1[0]" value="1" class="chbo" checked="checked">
<input type="hidden" name="cbox1[1]" value="0" class="chbo">
<input type="checkbox" name="cbox1[1]" value="1" class="chbo" checked="checked">
所以如果不勾选,只会提交值为0
的隐藏cbox1[0]
。如果选中,则值为 1
的 cbox1[0]
将覆盖隐藏的输入。
您现在不需要 JavaScript,因为您可以将复选框更改为值 0
,但如果未选中,则不会提交。
【讨论】:
【参考方案2】:提交表单后,POST 或 GET 数组中不存在未选中的复选框。要检查未选中的复选框表单元素,请使用简单的 isset() 调用。
$wer[0]=isset($_POST['cbox1'][0]) ? $_POST['cbox1'][0]:0;
$wer[1]=isset($_POST['cbox1'][1]) ? $_POST['cbox1'][1]:0;
...
【讨论】:
以上是关于数组仅存储值为 1(非 0)的复选框 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
如果未选中复选框,如何提交 0,如果在 HTML 中选中复选框,如何提交 1 [重复]
如果文本框的值为 0,则 jQuery Checkbox 为真,但如果文本框为空白,则为假 [重复]