【问题标题】:Keeping a checkbox checked after refreshing the page刷新页面后选中复选框
【发布时间】:2014-10-07 19:04:55
【问题描述】:

我的 php 页面中有一些复选框。当我检查其中一些时,一些 div 被隐藏,一些变得可见。但是当我刷新页面时,复选框被取消选中。然后所有 div 都可见。 刷新页面后如何保持复选框处于选中状态..?

我尝试了如下代码

<html>
<head>
<script src="http://code.jquery.com/jquery-1.9.0.min.js"></script>
        <script src="http://code.jquery.com/qunit/qunit-1.10.0.js"></script>
        <script src=".jquery.cookie.js"></script>
        <script src="tests.js"></script>
<script type="text/javascript">
$(function(){
  var cookieChecked = $.cookie("cookieChecked");
  if(cookieChecked){
      $(cookieChecked).trigger("click");
  }
 })
</script> 
        </head>
        <body>



<label for="sitecheck">
<span style="font-weight:bold;">close site temp:</span>
</label>
<input name="" type="checkbox" id="sitecheck" onclick="validateSitec()" /><span style="font-weight:bold;">close site and add message</span><br>
<input type="text" name="closedmsg" id="closedmsg" style="width:440px;height:120px;display:none;" value="<?php echo $data['csitemsg']; ?>" />
<script type="text/javascript">

function validateSitec(){
if (document.getElementById('sitecheck').checked){
    $('#sitecheck').prop('checked', true);
    $('#closedmsg').slideDown();
    $.cookie("cookieChecked", "#sitecheck");
}else if(document.getElementById('closedmsg').checked){
    $('#closedmsg').slideUp();
    $("#sitecheck").removeProp("checked").checkboxradio("refresh");
    $.cookie("cookieChecked", "#closedmsg");
} else {
    $.cookie("cookieChecked","");
}
}


    </script>

</body>
</html>

【问题讨论】:

  • 您需要将其存储在某处,这些复选框是否在
    标记中,以便您可以在 PHP 中使用 $_POST 或 $_GET?或将其存储在客户端的 cookie 中,但并非每个人都允许使用 cookie
  • 那没有cookie怎么处理????
  • 你将如何“刷新”页面?

标签: html checkbox


【解决方案1】:

默认情况下,检查框不会在页面刷新时保持勾选,但您可以查看 jquery cookie 插件或查看keep checkbox ticked page

从那里使用此示例代码

javascript

function validateSitec(){
if (document.getElementById('sitecheck').checked){
    $('#sitecheck').prop('checked', true);
    $('#closedmsg').slideDown();
    $.cookie("cookieChecked", "#sitecheck");
}else if(document.getElementById('closedmsg').checked){
    $('#closedmsg').slideUp();
    $("#sitecheck").removeProp("checked").checkboxradio("refresh");
    $.cookie("cookieChecked", "#closedmsg");
} else {
    $.cookie("cookieChecked","");
}
}

在页面加载时

 $(function(){
  var cookieChecked = $.cookie("cookieChecked");
  if(cookieChecked){
      $(cookieChecked).trigger("click");
  }
 })

【讨论】:

  • 我试过了。但还是不行。我也导入了所有的脚本
  • 记得将函数 validateSite 放在表单或 div 持有它和网页头部的其他函数之后。在你的sitr中也包括jquery。仍然有问题也许你应该在你的问题中包含一些代码..
  • @Andewumi-包含我尝试过的代码,只需检查我做错了什么
【解决方案2】:

由于您没有显示任何代码,我们实际上不应该发布任何答案,因为一切都只是猜测。

如果您不想将其保存在 cookie 中,您可以将其保存在会话中,这样会更好,因为它是服务器端的。

因此,使用此解决方案,您必须选中复选框并单击提交按钮。如果您不喜欢这样,您可以将其更改为 ajax 调用。此外,如果您的用户离开您的页面并返回时您不想让它工作,您还必须更改一些东西......

所以这只是为了让您了解您的 PHP 的外观:

-让我们说你的复选框来自一个数组。在示例中,该数组称为$valuesForInput[]

<?php

session_start();


if(isset($_POST['check'])) {
    $_SESSION['check'] = $_POST['check'];
} else {
    unset($_SESSION['check']);
    session_destroy();
}


$valuesForInput[] = "one";
$valuesForInput[] = "two";
$valuesForInput[] = "three";

$html = '
    <form action="test.php" method="post">
        <div>';
            foreach($valuesForInput as $k => $v) {
                if(is_array($_SESSION['check'])) {
                    $check = in_array($v, $_SESSION['check']) ? ' checked' : '';
                }
                $html.='
                    <input type="checkbox" name="check[]" value="'.$v.'"'.$check.'>
                    <label for="check1">'.$v.'</label>
                ';
            } $html.='
        </div>
        <input type="submit" value="submit" />
    </form>
';


echo $html;
?>

玩得开心编码

【讨论】:

  • 谢谢@caramba-我尝试了一些其他代码,我在我的帖子中更新了这些代码。请检查一次..
【解决方案3】:

试试这个,我认为这个会起作用。我们也可以在刷新页面后保留复选框

 <?php 

     $val=  $_POST['checkbox1']; 


  ?>


 <li>  <input type="checkbox" name="checkbox1[]" value="sradha" <?php if (strpos($val, "sradha") !== false) {  ?> checked="checked" <?php } ?> />
<label>sradha</label></li>

它应该可以工作

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-17
    • 2021-04-24
    • 2014-04-03
    • 2013-08-17
    • 1970-01-01
    相关资源
    最近更新 更多