2014-04-16 199 views
1

我有一些複選框在我的PHP頁面。當我檢查其中一些,一些div隱藏,一些可見。但是當我刷新頁面,複選框得到unchecked.and所有那麼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> 
+0

你需要將它存儲在某個地方,那些複選框在

標籤中,所以你可以在PHP中使用$ _POST或$ _GET?或將其存儲在cookie中,這將是客戶端,但不是每個人都允許cookies – caramba

+0

那麼如何處理它沒有cookies? – user3488008

+0

你將如何「刷新」頁面? – powtac

回答

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

和鄰否Page加載

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

我試過這個,但仍然沒有工作。我導入了所有的腳本以及 – user3488008

+0

記得在form或div之後放置函數validateSite,而另一個函數放在網頁的頭部。還包括jQuery在你的sitr。仍然有問題,也許你在你的問題包括一些代碼.. –

+0

k.will檢查並更新代碼.... – user3488008

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

樂趣編碼

+0

謝謝@ caramba-i嘗試了一些其他代碼,我更新了我的post.please檢查一次.. – user3488008

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

後它應該工作

相關問題