我在页面上有一个链接可以切换div的可见性。 div包含已发布的表单的过滤器选项。我希望在帖子后保留过滤器的可见性;所以如果它在发布之前打开,它会在发布后保持打开状态。
到目前为止,这是我的脚本代码:
$(document).ready(function() {
// choose text for the show/hide link
var showText="Show Filter Options";
var hideText="Hide Filter Options";
// create the toggle link
$("#filter-params").before("<p><a href='#' id='toggle-link'>"+showText+"</a>");
// hide the content
$('#filter-params').hide();
// capture clicks on the newly created link
$('a#toggle-link').click(function() {
// change the link text
if ($('a#toggle-link').text()==showText) {
$('a#toggle-link').text(hideText);
}
else {
$('a#toggle-link').text(showText);
}
// toggle the display
$('#filter-params').toggle('slow');
// return false so any link destination is not followed
return false;
});
});
答案 0 :(得分:2)
为什么不在与表单一起发布的隐藏字段中存储布尔值?这种方式在PHP中你会知道它的价值,你可以在下一个回复中正确地呈现它。
如果您需要一个例子,请告诉我。
<?php
var $defaultFilterSetting = false;
// This code only runs when you've performed a post back to this page
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$defaultFilterSetting = $_POST["defaultFilterSetting"];
}
?>
<form name="input" action="<?php $PHP_SELF;?>" method="post">
<input type="hidden" name="defaultFilterSetting" value="<?=$defaultFilterSetting?>" />
<!-- ... all other html elements -->
</form>
<script type="text/javascript">
var filterSetting = $('input[name="defaultFilterSetting"]').val();
alert(filterSetting);
// you can change the value here and it will be posted back everytime
// eg. let's change it to true here:
$('input[name="defaultFilterSetting"]').val(true);
// if you would do another postback it should alert true now;
</script>
请原谅我,如果它包含拼写错误,已经有一段时间了,因为我已经编写了PHP并且我没有主机设置来测试它。所以这是写的。
答案 1 :(得分:1)
将其状态存储在cookie中。
jQuery Cookie plugin摘录了一些关于在JavaScript中设置和阅读Cookie的烦人事项。
答案 2 :(得分:0)
您可以在脚本标记中包含php。
例如我今天所做的事情就在我的
中if (isset($_POST['submit']
{
$stall_type = sanitize($_POST['stall_type'];
}
然后在我的脚本标签(document.ready)中进一步向下我的
页面$('.tandem').hide();
<?php if (isset($_POST['submit']))
{
if ($stall_type == 'tandem')
{ ?>
$('.tandem').show();
<?php } else { ?>
$('.tandem').hide();
<?php }
} ?>