我有一个带有复选框的表单,用于过滤某些搜索结果。
表单操作为GET
,以便用户可以导航回搜索结果,而无需确定发布数据请求消息。
我希望其中一个复选框默认为true。这当然不是问题,它是简单的HTML。然而,我正在努力弄清楚它的功能是PHP。
当用户第一次访问该页面时,将不会设置任何GET
个变量,这意味着将取消设置此检查框并且所有相关检查将评估为false。意思是我做不到:
#this returns a false negative
if (isset($_GET['thisCheckbox'])) echo 'checked="checked"';
如果用户明确勾选复选框并提交,那么没关系,因为$_GET['thisCheckbox']
将为真。
有没有办法解决这个问题(不使用单选按钮)?
答案 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">