я не хочу select2 multi select выпадающих свободных данных при обновлении страницы. Выпадающий список select2 должен поддерживать состояние

Я не хочу, чтобы select2 множественный выбор раскрывал свободные данные при обновлении страницы. select2 раскрывающийся список должен сохранять состояние

below is my code. its working fine, I have only problem that select2 is losing selection/data if we refresh the page.My requirement is even after page refresh it should not remove there values/or empty.

 $processOrderNbr.select2({
            ajax: getProcessOrderNbr(),
            minimumInputLength: 4,
            placeholder: " ",
            allowClear: false,
            multiple: true
        });

        function getProcessOrderNbr() {
            return {
                url: 'GetProcessOrder',
                dataType: 'json',
                delay: 250,
                data: function (params) {
                    return {
                        searchKeyword: params
                    };
                },
                results: function (data) {
                    return {
                        results: $.map(data, function (item) {
                            return {
                                text: item,
                                id: item
                            }
                        })
                    };
                }
            };
        }


person Pawan Soni    schedule 14.02.2017    source источник


Ответы (2)


Вам нужно поместить их снова в select2 коробки. У меня была похожая проблема, когда я работаю с window.sessionStorage для хранения выбранных значений. После перезагрузки страницы я устанавливаю значения, хранящиеся в хранилище сеансов, в поля select2 с помощью этого кода:

var selectionList = [{ id: window.sessionStorage.getItem("searchValue"), text: window.sessionStorage.getItem("searchValue")}];
$("#searchValue").select2({
                data: selectionList
});
$('#searchValue').val(window.sessionStorage.getItem("searchValue")).trigger("change");

Чтобы сохранить значения в window.sessionStorage, вы можете использовать этот код:

$('#searchValue').select2({
...
.on("change", function (e) {
  window.sessionStorage.setItem("searchValue", $(this).val());
}
...

Может быть, это решение поможет вам в вашем случае, но кто-то знает лучшее решение?

person dns_nx    schedule 22.02.2017

Если вам нужно показать предыдущее записанное значение после перезагрузки страницы без потери данных, это решение.


var dataCategory = JSON.parse(sessionStorage.getItem('category'));
var select = $("#category");

select.select2({
    tags: true,
    allowClear: true,
    maximumInputLength: 30,
    maximumSelectionLength: 20,
    tokenSeparators: [',', ' '],
    data: dataCategory 
}).on("change", function (e) {

    var selected = []; // create an array to hold all currently wrote by user

    // loop through each option
    $('#category option').each(function() {
        // if it's selected, add it to the array above
        if (this.selected) {
            selected.push(this.value);
        }
    });


    // store the array of selected options
    sessionStorage.setItem('category', JSON.stringify(selected));

});


// set and show the previous wrote keywords
var dataCategoryLength = dataCategory.length;
for (var i =0; i < dataCategoryLength; i++) {
    $('#category').val(dataCategory).trigger('change');

}


person Lan Danel    schedule 30.06.2021