如果未选中则复选框不提交,那么如何将它们默认为true?

时间:2010-09-08 09:40:46

标签: php html checkbox

我有一个带有复选框的表单,用于过滤某些搜索结果。

表单操作为GET,以便用户可以导航回搜索结果,而无需确定发布数据请求消息。

我希望其中一个复选框默认为true。这当然不是问题,它是简单的HTML。然而,我正在努力弄清楚它的功能是PHP。

当用户第一次访问该页面时,将不会设置任何GET个变量,这意味着将取消设置此检查框并且所有相关检查将评估为false。意思是我做不到:

#this returns a false negative
if (isset($_GET['thisCheckbox'])) echo 'checked="checked"';

如果用户明确勾选复选框并提交,那么没关系,因为$_GET['thisCheckbox']将为真。

有没有办法解决这个问题(不使用单选按钮)?

5 个答案:

答案 0 :(得分:2)

您想要检查它是否已设置,如果未设置,请检查是否有其他指示已发生请求的变量。

答案 1 :(得分:2)

不是很好,但是引入一个隐藏的字段$_GET['filterApplied']呢。如果用户提交表单,则设置此字段。你可以像

那样做

if (!isset($_GET['filterApplied'] || isset($_GET['thisCheckbox'])) echo 'checked="checked"';

答案 2 :(得分:0)

如果您使用JQuery,请执行:

$(document).ready(function(){
$("#thisCheckbox").attr("checked",true);
});

这可以解决您的问题。

答案 3 :(得分:0)

如果您不将$_GET用于其他任何事情,您也可以

if( empty( $_GET ) || isset( $_GET['thisCheckbox'] ) ) {
    echo 'checked="checked"';
}

答案 4 :(得分:0)

这是一种丑陋的方法,但它确实有效。在复选框上方添加一个名称相同的隐藏输入字段。

<input type="hidden" name="thisCheckbox" value="0">
<input type="checkbox" name="thisCheckbox" value="1">