From be79730ee3cc8c4c0498e8401384dbc242ac4fe6 Mon Sep 17 00:00:00 2001 From: Andrey Smakotin Date: Sat, 8 Nov 2025 23:18:49 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=BF=D0=BE=D0=B4=D0=B4=D0=B5=D1=80=D0=B6=D0=BA?= =?UTF-8?q?=D0=B0=20=D1=81=D0=BE=D0=B1=D1=8B=D1=82=D0=B8=D0=B9=20Select2?= =?UTF-8?q?=20=D0=B2=20draft-creator.js?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Поля с Select2 не генерируют стандартные события 'change', поэтому добавлено прослушивание событий 'select2:select'. Также добавлено логирование для отладки. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .../orders/static/orders/js/draft-creator.js | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/myproject/orders/static/orders/js/draft-creator.js b/myproject/orders/static/orders/js/draft-creator.js index 094ce6c..6a2ee6c 100644 --- a/myproject/orders/static/orders/js/draft-creator.js +++ b/myproject/orders/static/orders/js/draft-creator.js @@ -61,11 +61,23 @@ // Слушаем изменения в поле клиента (обязательное поле) const customerField = form.querySelector('select[name="customer"]'); if (customerField) { + // Обычное событие change customerField.addEventListener('change', function() { + console.log('[DraftCreator] Customer changed (native event):', this.value); if (this.value && !draftCreated) { scheduleCreateDraft(); } }); + + // Событие Select2 + if (window.jQuery && jQuery(customerField).data('select2')) { + jQuery(customerField).on('select2:select', function(e) { + console.log('[DraftCreator] Customer changed (select2 event):', e.params.data.id); + if (e.params.data.id && !draftCreated) { + scheduleCreateDraft(); + } + }); + } } // Слушаем изменения в других основных полях @@ -84,13 +96,27 @@ const fields = form.querySelectorAll(selector); fields.forEach(field => { const eventType = (field.tagName === 'SELECT' || field.type === 'checkbox') ? 'change' : 'input'; + + // Обычное событие field.addEventListener(eventType, function() { + console.log('[DraftCreator] Field changed:', field.name); // Создаём черновик только если выбран клиент const customer = form.querySelector('select[name="customer"]'); if (customer && customer.value && !draftCreated) { scheduleCreateDraft(); } }); + + // Для select полей также слушаем Select2 + if (field.tagName === 'SELECT' && window.jQuery && jQuery(field).data('select2')) { + jQuery(field).on('select2:select', function() { + console.log('[DraftCreator] Field changed (select2):', field.name); + const customer = form.querySelector('select[name="customer"]'); + if (customer && customer.value && !draftCreated) { + scheduleCreateDraft(); + } + }); + } }); }); @@ -136,12 +162,26 @@ const fields = form.querySelectorAll('select, input[type="number"]'); fields.forEach(field => { const eventType = field.tagName === 'SELECT' ? 'change' : 'input'; + + // Обычное событие field.addEventListener(eventType, function() { + console.log('[DraftCreator] Item field changed:', field.name); const customerField = document.querySelector('select[name="customer"]'); if (customerField && customerField.value && !draftCreated) { scheduleCreateDraft(); } }); + + // Для select полей товаров также слушаем Select2 + if (field.tagName === 'SELECT' && window.jQuery && jQuery(field).data('select2')) { + jQuery(field).on('select2:select', function() { + console.log('[DraftCreator] Item field changed (select2):', field.name); + const customerField = document.querySelector('select[name="customer"]'); + if (customerField && customerField.value && !draftCreated) { + scheduleCreateDraft(); + } + }); + } }); form.dataset.draftCreatorAttached = 'true';