保持复选框选中,刷新并提交后

Posted

技术标签:

【中文标题】保持复选框选中,刷新并提交后【英文标题】:Keep checkbox checked, after refresh and submit 【发布时间】:2016-05-08 02:56:23 【问题描述】:

我试图保持选中一个复选框,但是在我刷新页面后,如果选中该复选框,数据库将更新为“是”,但数据库会自动将其更新为“否”,即使复选框是与local.store核实,我希望有人可以帮助我。这是我的代码。

    <form action="" method="POST">
     <label for="option1">Waarschuwingsbericht inschakelen voordat het volgende pack wordt geopend als jou pack boven de 200.000 waard is?</label><input id='option1' type="checkbox" name="checkbox" value="yes"><br>
      <input type="submit" value="Opslaan en nog een pack openen">
    </form>
<?
    if(isset($_POST['checkbox']))
        $sql = "UPDATE users SET puntenchecked = 'yes' WHERE username = '" . $usernamez . "'";
        $result = mysql_query($sql) or die('Query failed: ' . mysql_error());
    
    else 
        $sql = "UPDATE users SET puntenchecked = 'no' WHERE username = '" . $usernamez . "'";
        $result = mysql_query($sql) or die('Query failed: ' . mysql_error());
    
?>
<script>
$(function()
    var test = localStorage.input === 'true'? true: false;
    $('input').prop('checked', test || false);
);

$('input').on('change', function() 
    localStorage.input = $(this).is(':checked');
    console.log($(this).is(':checked'));
);
</script>

【问题讨论】:

你不需要这个$('input').prop('checked', test || false);。这应该足够了$('input').prop('checked', test); 使用 checked 属性到 &lt;input type="checkbox"&gt; 基于 $_POST['checkbox'] 请求设置。看到这里stack answer已经做到了。 【参考方案1】:

试试这个:

<input id='option1' type="checkbox" name="checkbox" value="yes" <?php echo (isset($_POST['checkbox']))? "checked='checked'": "";?> >

【讨论】:

【参考方案2】:

替换下面的JS逻辑:

<script>
$(function()
    var test = localStorage.input === 'true'? true: false;
    $('input').prop('checked', test);
);

$('input').on('change', function() 
    localStorage.input = $(this).is(':checked');
    console.log($(this).is(':checked'));
);
</script>

查看更多here。

【讨论】:

以上是关于保持复选框选中,刷新并提交后的主要内容,如果未能解决你的问题,请参考以下文章

表单提交后选中的复选框保持选中/未选中状态

PHP数组复选框问题,提交后保持选中“正确”框

页面刷新JavaScript,Spring Boot时如何保持复选框处于选中状态?

复选框值真/假

选中复选框后启用提交按钮

更改页面后复选框列表保持初始状态