数组仅存储值为 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)。

html

<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]。如果选中,则值为 1cbox1[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,选中的值为 1?

如果未选中复选框,如何提交 0,如果在 HTML 中选中复选框,如何提交 1 [重复]

如果文本框的值为 0,则 jQuery Checkbox 为真,但如果文本框为空白,则为假 [重复]

选中时尝试更改自定义复选框标签的颜色,仅 CSS [重复]

即使未选中,也要发布复选框值。 (复选框的名称是数组格式)[重复]

自动化状态复选框以验证活动/非活动