Выбрать2 невыбранных вариантаJquery

Программирование на jquery
Ответить
Anonymous
 Выбрать2 невыбранных варианта

Сообщение Anonymous »

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

Код: Выделить всё

$(field).select2({
allowClear: true,
placeholder: 'Select Records',
width: 'resolve',
closeOnSelect: false,
ajax: {
url: `/programs/${field.dataset.programId}/fetch_records`,
type: 'POST',
dataType: 'json',
beforeSend: function(xhr) {
xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content'));
},
data: function (params) {
$(document).on('manual-append-end', function(event) {
return;
});

var query = {
term: params.term,
page:  params.page || 1
}

return query;
},
processResults: function (data, params) {
debugger
params.page = params.page || 1;
var dropdown = $('#select2-manual_scheduler_record_ids-results')
var existingOptions = dropdown.find('li[aria-selected="false"]').toArray();
var existingResults = existingOptions.map(function(option) {
return {
id: $(option).val(),
text: $(option).text()
};
});
var combinedResults = existingResults.concat(data.results);
return {
results: combinedResults,
pagination: {
more: dropdown.find('li[aria-selected="false"]').length < 1 ? data.pagination.more : false
}
};
},
cache: true
},
minimumInputLength: 0
})

Код: Выделить всё

$('.select2').on('select2:unselect', function(e) {
debugger
var optionElement = new Option(e.params.data.text, e.params.data.id, false, false);

$(e.target).append(optionElement).trigger('change');

// Trigger a custom event to signal that the manual append is complete
$(e.target).trigger('manual-append-end');
});

Код: Выделить всё

$('.select2').on('select2:unselect', function(e) {
var unselectedValue = e.params.data.id;

var programId = $(this).data('program-id');
$.ajax({
url: `/programs/${programId}/fetch_records`,
type: 'POST',
dataType: 'json',
data: { term: unselectedValue, bulk: true },
beforeSend: function(xhr) {
xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content'));
},
success: function(response) {
var newOption = response.results.find(option => option.id == unselectedValue);
if (newOption) {
var optionElement = new Option(newOption.text, newOption.id, false, false);
$(e.target).append(optionElement).trigger('change');
}
}
});
});
Я все это пробовал, но ничего не помогает. Было бы очень полезно, если бы кто-нибудь дал какое-то решение. Приведенные выше решения, которые я пробовал, работают, но после этого, когда я открываю поле выбора, созданная опция исчезает из-за выполнения части данных

Подробнее здесь: https://stackoverflow.com/questions/787 ... ed-options
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Jquery»