Улучшено логирование для отладки Select2

- Добавлены дополнительные обработчики событий (closing, keyup, change)
- Добавлена проверка наличия search input элемента
- Отключено кэширование для AJAX запросов
- Добавлено форматирование параметров для debuggingтых
- Убрана функция matcher для упрощения логики

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-10 22:32:18 +03:00
parent 95d5e52a97
commit fa4f4efb66

View File

@@ -414,6 +414,8 @@ document.addEventListener('DOMContentLoaded', function() {
placeholder: 'Начните вводить имя, телефон или email',
minimumInputLength: 1,
allowClear: true,
tags: false,
dropdownAutoWidth: false,
ajax: {
url: '{% url "customers:api-search-customers" %}',
dataType: 'json',
@@ -421,14 +423,21 @@ document.addEventListener('DOMContentLoaded', function() {
quietMillis: 250,
data: function(params) {
console.log('AJAX DATA FUNCTION вызвана, поисковый запрос:', params.term);
return {
const queryData = {
q: params.term || '',
page: params.page || 1
};
console.log('Отправляем данные:', queryData);
return queryData;
},
processResults: function(data) {
processResults: function(data, params) {
console.log('AJAX RESPONSE получен:', data);
console.log('Количество результатов:', data.results ? data.results.length : 0);
if (data.results) {
data.results.forEach(function(item, index) {
console.log('Результат ' + index + ':', item);
});
}
return {
results: data.results || [],
pagination: {
@@ -436,7 +445,7 @@ document.addEventListener('DOMContentLoaded', function() {
}
};
},
cache: true,
cache: false,
error: function(jqXHR, textStatus, errorThrown) {
console.error('AJAX ERROR при поиске клиента:', {
status: textStatus,
@@ -448,14 +457,7 @@ document.addEventListener('DOMContentLoaded', function() {
},
templateResult: formatCustomerOption,
templateSelection: formatCustomerSelection,
escapeMarkup: function(markup) { return markup; },
matcher: function(params, data) {
// Позволяем все результаты, фильтрация на сервере
if ($.trim(params.term) === '') {
return null;
}
return data;
}
escapeMarkup: function(markup) { return markup; }
});
console.log('Select2 инициализирован');
@@ -473,6 +475,28 @@ document.addEventListener('DOMContentLoaded', function() {
console.log('SELECT2 SEARCHING - ищем, query:', e.params.term);
});
$customerSelect.on('select2:closing', function(e) {
console.log('SELECT2 CLOSING - закрытие dropdown');
});
// Логируем изменение на уровне input
$customerSelect.on('keyup', function(e) {
console.log('KEYUP событие, текст:', $(this).val());
});
$customerSelect.on('change', function(e) {
console.log('CHANGE событие, значение:', $(this).val());
});
// Проверяем наличие input элемента внутри Select2
setTimeout(function() {
const searchInput = $customerSelect.data('select2').$search || $customerSelect.data('select2').$searchContainer?.find('input');
console.log('Select2 search input найден:', !!searchInput);
if (searchInput) {
console.log('Search input element:', searchInput);
}
}, 500);
// Форматирование опции в списке
function formatCustomerOption(option) {
console.log('formatCustomerOption вызвана для:', option);