【问题标题】:How to remember the toggle state on form submit - show/hide in the session variable如何记住表单提交时的切换状态 - 在会话变量中显示/隐藏
【发布时间】:2014-10-28 23:08:10
【问题描述】:

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

【问题讨论】:

  • 在会话中存储一个布尔值并基于它的显示/隐藏?
  • 您必须使用 AJAX 存储它。通过 AJAX 设置会话变量。

标签: javascript php jquery session toggle


【解决方案1】:

似乎您有几个选择。如上面的 cmets 中所述,您可以向切换的单击处理程序添加一些内容,以对服务器进行 AJAX 调用并立即将值存储在会话中。

但是,您最初的问题是如何将其存储在表单提交(发布)中。如果您不想走 AJAX 路线,我的建议是在您的标记中添加一个隐藏的输入控件,并为切换状态设置一个真/假值。每次单击切换时,也要切换隐藏控件的值。当您提交表单时,只需检查隐藏控件的值并根据需要将值存储在会话中。

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

【讨论】:

    猜你喜欢
    • 2015-01-18
    • 2017-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多