如何发送未选中的复选框以发布

时间:2012-05-02 19:35:07

标签: php html post

只有我选中的复选框才会被放入$ _POST。我希望检查的是$ _POST,值为'true',未检查的值为'false'。无论如何都要这样做,或者POST请求总是只包含有关选中复选框的信息。

我唯一能想到的就是使用隐藏的表单字段,只需让复选框操作它们。

6 个答案:

答案 0 :(得分:1)

请参阅Posting Unchecked CheckboxUnchecked checkbox values

可以通过添加具有相同名称的隐藏字段来实现。

答案 1 :(得分:1)

你可以使用

<input type="checkbox" name="myCheckbox" value="true" />
<input type="hidden" name="myCheckbox" value="false" />

然后解析服务器上的输入。您将获得falsetrue false,前者映射到false,后者映射到true

答案 2 :(得分:0)

它只包含已选中复选框的内容。您必须通过使用表单帮助器或输入过滤器来模拟,否则您可以按照自己喜欢的方式连接变量/数组。

这样的功能将需要您为每个表单使用的所有复选框,然后可以设置为true,找到什么,并留下未检测到的虚假内容。

答案 3 :(得分:0)

你可以从你的php做:

if(isset($_POST['checkbox'])||$_POST['checkbox']!="yes"){
    //other code here
}

或者,您可以使用一些javascript在提交之前添加隐藏输入,以查找未发送的复选框值

答案 4 :(得分:0)

这是不可能的,因为它取决于浏览器。

您可以通过执行

检查是否已发布
<?php
if (isset($_POST['checkbox1']))
{
    // it's posted
}

或使用!

<?php
if (!isset($_POST['checkbox1']))
{
    // it's NOT posted
}

答案 5 :(得分:0)

您可以在服务器端假设未选中未设置在帖子数据上的那些人。尝试验证变量是否已设置:

$_POST['a_checkbox'] = (isset($_POST['a_checkbox'])) ? 1 : 0;

使用truefalse,或使用所需的数据。