From 62115bbe0076f38e27076bd79eea966e3e24c6b6 Mon Sep 17 00:00:00 2001 From: Andrey Smakotin Date: Sun, 9 Nov 2025 19:32:20 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20=D0=BE=D0=B1=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BE=D0=BA=20=D0=BF?= =?UTF-8?q?=D1=80=D0=B8=20=D1=81=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD=D0=B8=D0=B8?= =?UTF-8?q?=20=D0=B2=D1=80=D0=B5=D0=BC=D0=B5=D0=BD=D0=BD=D0=BE=D0=B3=D0=BE?= =?UTF-8?q?=20=D0=BA=D0=BE=D0=BC=D0=BF=D0=BB=D0=B5=D0=BA=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Перемещена функция fillFormWithKit в начало обработчика для правильного hoisting - Добавлена валидация данных комплекта перед заполнением формы - Добавлены проверки наличия элементов формы 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .../orders/templates/orders/order_form.html | 70 +++++++++++-------- 1 file changed, 41 insertions(+), 29 deletions(-) diff --git a/myproject/orders/templates/orders/order_form.html b/myproject/orders/templates/orders/order_form.html index 37dc404..1316c54 100644 --- a/myproject/orders/templates/orders/order_form.html +++ b/myproject/orders/templates/orders/order_form.html @@ -774,6 +774,47 @@ document.addEventListener('DOMContentLoaded', function() { }) .then(data => { console.log('Response data:', data); + + // Функция заполнения формы данными комплекта + function fillFormWithKit(form, kitData) { + if (!kitData || !kitData.kit_id || !kitData.kit_name || !kitData.kit_price) { + console.error('Invalid kit data:', kitData); + alert('Ошибка: неверные данные комплекта'); + return; + } + + // Устанавливаем значения для комплекта + const kitSelect = form.querySelector('.select2-order-item'); + const quantityInput = form.querySelector('[name$="-quantity"]'); + const priceInput = form.querySelector('[name$="-price"]'); + + if (!kitSelect) { + console.error('Kit select not found in form'); + return; + } + + // Используем Select2 API для добавления опции + const newOption = new Option(kitData.kit_name, `kit_${kitData.kit_id}`, true, true); + $(kitSelect).append(newOption).trigger('change'); + + // Устанавливаем количество и цену + if (quantityInput) quantityInput.value = '1'; + if (priceInput) { + priceInput.value = kitData.kit_price; + priceInput.dataset.originalPrice = kitData.kit_price; + } + + // Явно вызываем событие select2:select для запуска автосохранения + $(kitSelect).trigger('select2:select', { + params: { + data: { + id: `kit_${kitData.kit_id}`, + text: kitData.kit_name + } + } + }); + } + if (data.success) { // Закрываем модальное окно const modal = bootstrap.Modal.getInstance(tempKitModal); @@ -807,35 +848,6 @@ document.addEventListener('DOMContentLoaded', function() { fillFormWithKit(targetForm, data); } - // Функция заполнения формы данными комплекта - function fillFormWithKit(form, kitData) { - // Устанавливаем значения для комплекта - const kitSelect = form.querySelector('.select2-order-item'); - const quantityInput = form.querySelector('[name$="-quantity"]'); - const priceInput = form.querySelector('[name$="-price"]'); - - // Используем Select2 API для добавления опции - const newOption = new Option(kitData.kit_name, `kit_${kitData.kit_id}`, true, true); - $(kitSelect).append(newOption).trigger('change'); - - // Устанавливаем количество и цену - if (quantityInput) quantityInput.value = '1'; - if (priceInput) { - priceInput.value = kitData.kit_price; - priceInput.dataset.originalPrice = kitData.kit_price; - } - - // Явно вызываем событие select2:select для запуска автосохранения - $(kitSelect).trigger('select2:select', { - params: { - data: { - id: `kit_${kitData.kit_id}`, - text: kitData.kit_name - } - } - }); - } - // Очищаем форму модального окна document.getElementById('temp-kit-name').value = ''; document.getElementById('temp-kit-description').value = '';