Сохранение состояния отображения / скрытия разделов в Django с помощью jQuery / Javascript - PullRequest
1 голос
/ 17 декабря 2010

У меня есть форма с некоторыми разделами показать / скрыть. Когда я нажимаю некоторые кнопки в домашней форме, отображаются разные формы. После того, как я отредактировал информацию в этих формах, я возвращаюсь к первой форме. Но состояние разделов «показать / скрыть» сбрасывается. Действие show / hide выполняется с помощью переключателя jquery. Состояние этих разделов необходимо сохранять при возвращении. Поэтому я думаю о сохранении состояния каждого раздела в переменных сеанса. У вас есть другие решения? Было бы лучше или возможно иметь такое поведение в отдельном месте, например в промежуточном программном обеспечении?

1 Ответ

1 голос
/ 17 декабря 2010

Вам на самом деле не нужно хранение сессии.В случае, который вы описали, вы хотите, чтобы статус показа / скрытия разделов сохранялся между страницами для одного клиента.Сеанс был бы излишним, так как он требует от сервера чего-то тривиального.

Мне бы хотелось использовать что-то вроде localStorage (или куки, если вы действительно хотите) непосредственно в jQuery.Он останется на клиенте, и сервер не будет возражать.

РЕДАКТИРОВАТЬ

Функция для проверки локального хранилища:

var canHazStorage = function () {
    "use strict";
    try {
        return 'localStorage' in window && window.localStorage !== null;
    } catch(e) {
        return false;
    }
};

Вам потребуетсячтобы изменить код переключения для установки значения:

$('#section1').toggle();

if ( canHazStorage ) {
    if ( is_shown ) { // you'll need to write that yourself
        window.localStorage['section1'] = true;
    } else {
        window.localStorage['section1'] = false;
    }
} else {
    // same code using cookies
}

А в функции инициализации:

if ( canHazStorage ) {
    var toggled = window.localStorage['section1'];
    $('#section1').toggle(toggled);
} else {
    // same code using cookies
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...