Похоже, что это было задано несколько раз в прошлом, но по какой-то причине вопросы остаются без ответа.
Я пытаюсь сохранить выбор нескольких входов. Я использую этот код, который я нашел здесь в stackoverflow, но он сохраняет только первый выбор.
$(function() {
if($.cookie('remember_select') != null) {
$('.select_class option[value="' + $.cookie('remember_select') + '"]').attr('selected', 'selected');
}
$('.select_class').change(function() {
$.cookie('remember_select', $('.select_class option:selected').val(), {expires: 365, path: '/'});
});
});
благодаря
Вот работа, с которой я столкнулся...
<select class="select_class" id="foo" name="foo">
<option value="1">1</option>
<option value="2">2</option>
</select>
$(function(){
var selectbox=$('#setup').find('.select_class'), selectboxCookieName='selection';
selectbox.each(function(){
$(this).prop('value', $.cookie(selectboxCookieName + '|' + this.name));
});
selectbox.change(function(){
if(this.value){
$.cookie(selectboxCookieName + '|' + this.name, this.value,{
expires: 365
});
}else{
$.removeCookie(selectboxCookieName + '|' + this.name);
}
});
});
Вот решение, которое я понял...
<select class="select_class" id="foo" name="foo">
<option value="1">1</option>
<option value="2">2</option>
</select>
$(function(){
var selectbox=$('#setup').find('.select_class'), selectboxCookieName='selection';
selectbox.each(function(){
$(this).prop('value', $.cookie(selectboxCookieName + '|' + this.name));
});
selectbox.change(function(){
if(this.value){
$.cookie(selectboxCookieName + '|' + this.name, this.value,{
expires: 365
});
}else{
$.removeCookie(selectboxCookieName + '|' + this.name);
}
});
});
В этом случае значение cookie будет переопределено с каждым изменением в определенном элементе select. Вам необходимо изменить сохранение файлов cookie, чтобы вы могли различать разные элементы. например: сохранить в том же файле cookie список значений для каждого элемента управления {"element1": "option 1", "elementX": "optionY"}, что-то вроде:
var controlId = $('.select_class).attr("id"); //assume id is elementX
var controlValue = $('.select_class option:selected').val(); //assume value is optionX
var oldValue = $.parseJSON($.cookie('remember_select'));
var data = {};
data[controlId] = controlValue; //now data is {"elementX":"optionX"}
var newValue = $.extend({}, oldValue, data); //add or replace the value for elementX
$.cookie('remember_select', JSON.stringify(newValue), {expires: 365, path: '/'});
Теперь вам нужно обновить соответствующий код, чтобы получить значение для определенного элемента управления, например:
var data = $.parseJSON($.cookie('remember_select')); // json object
var controlValue = data[controlId];