2011-11-14 240 views
0

我有一个使用slideToggle()隐藏的窗体。我需要做的是让用户在点击“展示表单”链接后查看表单,填写表单并点击提交。然后,如果有任何错误允许页面刷新,div仍然显示。在页面刷新后保持slideToggle()div打开?

换句话说,我该如何防止slideToggle()在页面刷新上重置。否则,用户必须再次显示表单才能看到错误。我只是用一个基本的PHP_SELF,而不是AJAX,因为我想保持它简单。

这是我目前的JS:

$('a#booknow').click(function() { 
$('#formcontain').slideToggle('slow', function() { 
    $(this).toggleClass('houdini'); 
}); 
return false; 
}); 

感谢

+0

考虑请求页面的查询字符串或哈希(如'#showform'或'showform = 1'?),而不是简单地刷新它。这样,您可以测试所述查询字符串或散列的存在,并基于此显示/隐藏您的表单。 – Blazemonger

回答

2

我会使用一个cookie,另外我会使用一个plugin(因为编写客户端Cookie管理代码会使我的头部受伤)。

$('a#booknow').click(function() { 
    $('#formcontain').slideToggle('slow', function() { 
     $(this).toggleClass('houdini'); 
    }); 
    $.cookie('form_visible', $('#formcontain').is(':visible').toString()); 
    return false; 
}); 
然后在页面加载

$(function() { 
    if($.cookie('form_visible') == 'true') { 
     $('#formcontain').show(); 
    } else { 
     $('#formcontain').hide(); 
    } 
}); 
+0

感谢Bryan,他在这里找到了jQuery cookie插件:https://github.com/carhartl/jquery-cookie –

1

要保存的状态,你应该使用一个客户端存储,例如,饼干。 你可以将JS的状态保存在一个SESSION变量中(然后你需要以某种方式告诉PHP什么是状态,或许使用ajax)。