刷新页面后保持选中复选框

时间:2014-04-16 17:46:59

标签: html checkbox

我的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>

3 个答案:

答案 0 :(得分:0)

默认情况下,checboxes不会在页面刷新时停留,但您可以查看jquery cookie插件或查看keep checkbox ticked 页面

使用此示例代码

的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");
  }
 })

答案 1 :(得分:0)

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

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

因此,使用此解决方案,您必须选中复选框并单击“提交”按钮。如果您不喜欢,可以将其更改为ajax电话。如果你的用户离开你的页面并回来,如果你不想让它发挥作用,你还需要改变一些东西....

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

-lets表示你的复选框来自一个数组。在示例中,数组称为$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;
?>

有趣的编码

答案 2 :(得分:-1)

尝试这个我觉得这个会工作。我们可以在刷新页面后保留复选框

 <?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>

应该有效