запомнить состояние .attr после перезагрузки страницы - PullRequest
1 голос
/ 26 января 2012

В моей форме есть несколько флажков: отметив одно, вы отключаете другое.Приведенный ниже код работает очень хорошо.Проблема заключается в том, что когда пользователь отправляет сообщение об ошибке (при перезагрузке страницы), флажок деактивируется снова.Но я хочу, чтобы он сохранил свое отключенное состояние.

<label for="Q09_01">
  <input class="Q09" name="Q09[]" id="Q09_01"  type="checkbox" />
aaa</label>
<label for="Q09_02">
  <input class="Q09" name="Q09[]" id="Q09_02"  type="checkbox" value="Q09_02" />
bbb</label>
<label for="Q09_03">
  <input class="Q09" name="Q09[]" id="Q09_03"  type="checkbox" value="Q09_03" />
ccc </label>
<label for="Q09_04">
  <input class="Q09" name="Q09[]" id="Q09_04"  type="checkbox" value="Q09_04" />
ddd </label>       

jQuery:

$(function(){

$('#Q09_01').click(function() {
$('#Q09_03').attr('disabled', this.checked);
});
$('#Q09_03').click(function() {
$('#Q09_01').attr('disabled', this.checked);
});

})     

Помимо этой конкретной проблемы, у меня была другая похожая проблема с переключателями ( поддерживает состояние переключаемого радио послеперезагрузка страницы ) и поддержание состояния отображения / скрытия / переключения при перезагрузке страницы.Есть ли какая-нибудь функция jQuery, которая запомнит ВСЕ из этих состояний после перезагрузки страницы?Как вы думаете, это http://www.jasonsebring.com/dumbFormState может помочь в том, чего я хочу достичь?Я новичок в jquery, и я буду признателен за любую помощь или советы или примеры хороших практик.

Ответы [ 3 ]

0 голосов
/ 26 января 2012

пытались ли вы использовать локальное хранилище или хранилище сеансов для хранения состояний ваших входов?Затем вы можете загрузить состояние ввода при загрузке страницы, если существует сеанс или локальное хранилище.

Это можно сделать с помощью javascript / jquery

, при этом не будет кода сервера или файлов cookie

попробуйте это для получения дополнительной информации

http://www.beakkon.com/tutorial/html5/web-storage

@ atmd83

0 голосов
/ 26 января 2012

Вы не можете использовать jQuery для запоминания состояния страницы. Когда страница обновляется, HTML-код будет пересылаться повторно, возвращая его по умолчанию в исходное состояние. Если вы хотите использовать серверный язык, такой как PHP, то это не обязательно так. Но, как вы сказали в комментарии, вы не хотите использовать PHP.

Следовательно, у вас есть два варианта:

  1. Печенье
  2. HTML5 веб-хранилище

# 2 не будет поддерживаться всеми браузерами, поэтому я бы рекомендовал перейти с # 1. По сути, когда пользователь устанавливает флажок, файл cookie создается / обновляется. Затем, после перезагрузки страницы, после того, как документ будет готов ($(document).ready(..)), вы будете использовать JavaScript для чтения файла cookie и внесения необходимых изменений в DOM (т. Е. Установите правильные флажки).

Вот наиболее часто используемый плагин jQuery cookie.

Если у вас возникли проблемы с созданием / обновлением / чтением файлов cookie, вам следует опубликовать новый вопрос именно об этом.

0 голосов
/ 26 января 2012

Есть два способа сделать это.Вы можете либо обработать это в своем скрипте на стороне сервера, проверив входные данные POST и сопоставив его.По сути, проверьте, определена ли переменная (или имеет ли она значение), и если нет, пометьте флажок как отключенный.На самом деле, в вашем случае вы проверяете фактическое переданное значение, так что на самом деле это просто следовало бы вашей логике jQuery.Например, некоторые примитивные PHP:

$disable_Q09_01 = $_POST['Q09'] == "Q09_03"

<input class="Q09" name="Q09[]" id="Q09_01"  type="checkbox" 
  <? if ($disable_Q09_01) echo "disabled"; ?>
 />

И, простите, я давно не принимал участия в PHP, я просто подумал, что это будет более распространенным явлением, чем предоставление кода Rails.быть, чтобы создать файл cookie перед отправкой формы.W3 документирует все это здесь .По сути, установите cookie "disable_Q09_01=true", затем прочитайте или очистите его в зависимости от приложения.Я считаю, что этот метод менее желателен, поскольку у пользователя могут быть отключены файлы cookie, но он будет работать (вне зависимости от того, какой серверный сценарий вы используете.

...