2012-11-01 5 views
1

Можно создать дубликат:
Html select option lost data after submitKeep выбрана опция (форма/выбор) после обновления

У меня есть меню выбора, который должен держать выбранный вариант после обновления страницы. Это пример:

<select id="form_frame" name="frame" onchange="getData(this);"/> 
    <option value="data1" selected="selected">Data 1</option> 
    <option value="data2">Data 2</option> 
</select> 

Функция getData просто вытаскивает информацию пользователю.

Я использую Smarty/php для динамического контента.

Открыт для консультаций, спасибо!

+2

Вы можете изучить использование файла cookie или localStorage. – Chase

+0

локальное хранилище, если браузеры старше IE8 не являются проблемой, куки-файлы, если они есть. – adeneo

+0

Пример использования localStorage для этого? – 82din

ответ

5

Как это делается с локальным хранилищем:

$(function() { 
    if (localStorage.getItem('form_frame')) { 
     $("#form_frame option").eq(localStorage.getItem('form_frame')).prop('selected', true); 
    } 

    $("#form_frame").on('change', function() { 
     localStorage.setItem('form_frame', $('option:selected', this).index()); 
    }); 
}); 

FIDDLE

+0

Моя знакомая эта опция работает для меню, но содержимое, выведенное с помощью функции getData onchange, не обновляется после обновления – 82din

+0

Нет, это не так, но я не могу понять, что делает эта функция, возвращает или вставляет? – adeneo

+0

Это функция javascript, которая показывает и скрывает некоторые объекты: например document.getElementById ('data1'). Style.display = 'block'; – 82din

0

Поместите идентификатор или значение выбранного элемента option в ваш php-сеанс ($_SESSION['selected_option_id']), таким образом это значение передается по всем страницам. А затем измените код, который генерирует элементы опций, снова проверьте $_SESSION['selected_option_id'], и если он соответствует одному, установите в выбранном атрибуте выбранный атрибут.

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

Я предпочитаю сеанс перед локальным хранилищем и файлы cookie, потому что эти могут быть недоступны или включены в браузере клиентов. Сессия - это функция apache/php и поддерживается на стороне серверов.

PHP Session Handling

-1

Вы можете использовать Cookies. Однако, если вы хотите, чтобы это работало для пользователей, которые не будут принимать файлы cookie с вашего сайта, добавьте URL-адрес с хэш-тегом. При замене поля выбора вы обновляете хэш-тег. При загрузке страницы вы проверяете текущий хеш-тег и устанавливаете опцию, значение которой соответствует одному из хэш-тегов.

Смежные вопросы