Я использую ссылку переключения, чтобы показать и скрыть некоторое содержимое страницы на странице поиска. Переключатель установлен на 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, я предлагаю добавить скрытый элемент управления вводом в разметку со значением true / false для состояния переключателя. При каждом нажатии на переключатель также переключайте значение скрытого элемента управления. Когда вы отправляете форму, просто проверьте значение скрытого элемента управления и сохраните значение в сеансе по своему усмотрению.
Недостатком этого подхода является то, что если по какой-либо причине браузер потерял состояние до отправки формы, вы не сохраните значение немедленно. Поэтому в некоторых сценариях (сбой браузера, переход в другое место) возможно, что форма не будет отправлена и, следовательно, значение переключателя не будет сохранено. Таким образом, вам придется решить, какой подход подходит для ваших сценариев.
Других решений пока нет …