diff --git a/myproject/orders/templates/orders/order_form.html b/myproject/orders/templates/orders/order_form.html index f8af74b..cb648d4 100644 --- a/myproject/orders/templates/orders/order_form.html +++ b/myproject/orders/templates/orders/order_form.html @@ -406,6 +406,13 @@ document.addEventListener('DOMContentLoaded', function() { console.log('=== ИНИЦИАЛИЗАЦИЯ SELECT2 ДЛЯ CUSTOMER ==='); console.log('Элемент найден:', $customerSelect.length > 0); console.log('ID элемента:', $customerSelect.attr('id')); + console.log('HTML select перед инициализацией:', $customerSelect.prop('outerHTML').substring(0, 200)); + + // Уничтожаем существующий Select2 если он есть + if ($customerSelect.data('select2')) { + console.log('Уничтожаем существующий Select2'); + $customerSelect.select2('destroy'); + } $customerSelect.select2({ theme: 'bootstrap-5', @@ -414,44 +421,28 @@ document.addEventListener('DOMContentLoaded', function() { placeholder: 'Начните вводить имя, телефон или email', minimumInputLength: 1, allowClear: true, - tags: false, - dropdownAutoWidth: false, ajax: { url: '{% url "customers:api-search-customers" %}', + type: 'GET', dataType: 'json', - delay: 300, - quietMillis: 250, + delay: 500, data: function(params) { - console.log('AJAX DATA FUNCTION вызвана, поисковый запрос:', params.term); - const queryData = { - q: params.term || '', - page: params.page || 1 + console.log('>>> AJAX DATA вызвана, поисковый запрос:', params.term); + return { + q: params.term || '' }; - console.log('Отправляем данные:', queryData); - return queryData; }, 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); - }); - } + console.log('>>> AJAX RESPONSE получен:', data); return { - results: data.results || [], - pagination: { - more: data.pagination ? data.pagination.more : false - } + results: data.results || [] }; }, - cache: false, - error: function(jqXHR, textStatus, errorThrown) { - console.error('AJAX ERROR при поиске клиента:', { - status: textStatus, - error: errorThrown, - statusCode: jqXHR.status, - responseText: jqXHR.responseText + error: function(xhr, status, error) { + console.error('>>> AJAX ERROR:', { + status: status, + error: error, + responseText: xhr.responseText }); } }, @@ -461,6 +452,8 @@ document.addEventListener('DOMContentLoaded', function() { }); console.log('Select2 инициализирован'); + console.log('Select2 data:', $customerSelect.data('select2')); + console.log('Select2 контейнер создан:', $customerSelect.next('.select2-container').length > 0); // Логируем события $customerSelect.on('select2:opening', function(e) { @@ -490,12 +483,29 @@ document.addEventListener('DOMContentLoaded', function() { // Проверяем наличие 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); + const select2Instance = $customerSelect.data('select2'); + console.log('Select2 instance:', select2Instance); + + if (select2Instance && select2Instance.$search) { + console.log('>>> Found $search:', select2Instance.$search); + select2Instance.$search.on('input', function(e) { + console.log('>>> Search input changed to:', $(this).val()); + }); + } else { + console.log('>>> $search не найден'); } - }, 500); + + // Пробуем找到 input через контейнер + const container = $customerSelect.next('.select2-container'); + console.log('Select2 container найден:', container.length > 0); + if (container.length > 0) { + const searchInput = container.find('input'); + console.log('Input fields в контейнере:', searchInput.length); + searchInput.on('input', function(e) { + console.log('>>> Input в контейнере изменился на:', $(this).val()); + }); + } + }, 1000); // Форматирование опции в списке function formatCustomerOption(option) {