Я использую select2 с нумерацией страниц, чтобы загрузить больше данных из базы данных, когда пользователь прокручивает раскрывающийся список. Проблема, с которой я сталкиваюсь, заключается в том, что я выбираю все записи, а затем отменяю выбор некоторых записей, после чего некоторые из них отображаются в раскрывающемся списке, а некоторые нет. .
$('.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');
}
}
});
});
Я все это пробовал, но ничего не помогает. Было бы очень полезно, если бы кто-нибудь дал какое-то решение. Приведенные выше решения, которые я пробовал, работают, но после этого, когда я открываю поле выбора, созданная опция исчезает из-за выполнения части данных
Я использую select2 с нумерацией страниц, чтобы загрузить больше данных из базы данных, когда пользователь прокручивает раскрывающийся список. Проблема, с которой я сталкиваюсь, заключается в том, что я выбираю все записи, а затем отменяю выбор некоторых записей, после чего некоторые из них отображаются в раскрывающемся списке, а некоторые нет. . [code]$(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; });
// Trigger a custom event to signal that the manual append is complete $(e.target).trigger('manual-append-end'); }); [/code] [code] $('.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'); } } }); }); [/code] Я все это пробовал, но ничего не помогает. Было бы очень полезно, если бы кто-нибудь дал какое-то решение. Приведенные выше решения, которые я пробовал, работают, но после этого, когда я открываю поле выбора, созданная опция исчезает из-за выполнения части данных