如何记住表单上的切换状态 - 在会话变量中显示/隐藏

时间:2014-10-20 18:58:13

标签: javascript php jquery session toggle

我正在使用切换链接在搜索页面上显示和隐藏某些页面内容。页面加载时,切换设置为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/

1 个答案:

答案 0 :(得分:1)

好像你有几个选择。如上面的评论所述,您可以在切换的click处理程序中添加一些内容,以便对服务器进行AJAX调用,并立即将值存储在会话中。

然而,您最初的问题是如何将其存储在表单提交(帖子)上。我的建议是,如果你不想进入AJAX路线,那就是为你的标记添加一个隐藏的输入控件,其中包含切换状态的真/假值。每次单击切换时,也会切换隐藏控件的值。提交表单时,只需检查隐藏控件的值,并根据需要将值存储在会话中。

这种方法的缺点是,如果由于某种原因浏览器在表单提交之前丢失状态,则不会立即存储该值。因此,在某些情况下(浏览器崩溃,导航)可能无法提交表单,因此未存储切换的值。因此,您必须确定哪种方法适用于您的方案。