2014-10-20 16 views
0

我正在使用切換鏈接在搜索頁上顯示和隱藏某些頁面內容。在頁面加載時,切換設置爲hide。 功能很好,但我需要記住表單提交的切換狀態,以便如果用戶決定編輯初始搜索,則會記住狀態。如何記住表單上的切換狀態提交 - 在會話變量中顯示/隱藏

這裏是工作的功能:

$(document).ready(function(){ 

    $(".slidingDiv").hide(); 
    $(".show_hide_search").show(); 

    $('.show_hide_toggle').on('click', function(e){ 
     e.preventDefault(); 

     var self = this, 
      sliding = $(this).closest('div').next('.slidingDiv').slideToggle(function(){ 
       $($(self).children()[0]).text(function(_,txt) { 
        return txt == "–" ? "+" : "–"; 
       }); 
      }); 
    }); 
}); 

和HTML:

<div class="show_hide_toggle"> 
    <a href="#" class="show_hide_search" id="plus">+</a>  
    <div class="show_hide_search2">More</div> 
</div> 

<div class="slidingDiv" style="display: block;"> 
     <h2>Content One</h2> 
</div> 

這是我記得的會話表單元素,如果有幫助:

<?php echo ($_SESSION['save_srch']['name1'] == 'name')?'selected="selected"':'';?> 

這裏是JSFiddle:http://jsfiddle.net/Bradg/eBfxB/11/

+0

在會話中存儲一個布爾值,並基於它顯示/隱藏的內容? – starvator 2014-10-20 18:59:58

+0

您必須使用AJAX進行存儲。通過AJAX設置會話變量。 – ChrisG 2014-10-20 19:04:33

回答

1

好像你有幾個選項。正如上面的評論中提到的,你可以添加一些東西到你的切換的點擊處理程序,以便對服務器進行AJAX調用並立即將該值存儲在會話中。

然而,你最初的問題是你如何可以將它存儲在表單提交(發佈)。我的建議,如果你不想去AJAX路線是添加一個隱藏的輸入控件到你的標記與切換狀態的真/假值。任何時候點擊切換,也切換隱藏的控制的值。提交表單時,只需檢查隱藏的控件的值,並根據需要將值存儲在會話中。

這種方法的缺點是,如果由於某種原因瀏覽器在表單提交之前丟失了狀態,則不會立即存儲該值。因此,在某些情況下(瀏覽器崩潰,導航),表單不會被提交,因此切換的值不會被存儲。所以你必須決定哪種方法適合你的場景。