代码之家  ›  专栏  ›  技术社区  ›  bcmcfc

如果未选中复选框,则不会提交,因此如何将其默认为true?

  •  1
  • bcmcfc  · 技术社区  · 14 年前

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

    动作的形式是 GET 这样用户就可以导航回搜索结果,而不必确定post data请求消息。

    当用户第一次访问页面时,不会有任何 变量设置,这意味着此复选框将被取消设置,所有相关的检查都将计算为false。意思是我不能做:

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

    如果用户明确地勾选复选框并提交,那么就可以了,因为 $_GET['thisCheckbox'] 会是真的。

    有没有办法绕过这个问题(不用单选按钮)?

    5 回复  |  直到 14 年前
        1
  •  2
  •   Williham Totland    14 年前

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

        2
  •  2
  •   hacksteak25    14 年前

    不是很好,但是引入一个隐藏字段怎么样 $_GET['filterApplied'] . 如果用户提交表单,则设置此字段。比你想做的还多

    
    if (!isset($_GET['filterApplied'] || isset($_GET['thisCheckbox'])) echo 'checked="checked"';
    
        3
  •  0
  •   Siva Gopal    14 年前

    如果使用JQuery,请执行以下操作:

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

    这应该能解决你的问题。

        4
  •  0
  •   Aether    14 年前

    $_GET 其他的,你也可以做

    if( empty( $_GET ) || isset( $_GET['thisCheckbox'] ) ) {
        echo 'checked="checked"';
    }
    
        5
  •  0
  •   Johan    14 年前

    这是一个丑陋的方法,但它的工作。在复选框上方添加同名的隐藏输入字段。

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