Автоматическая очистка полностью пустых форм товаров перед валидацией заказа

This commit is contained in:
2025-12-09 00:40:33 +03:00
parent a69a00cd64
commit bdfb89115a

View File

@@ -845,43 +845,57 @@
</div> </div>
<script> <script>
// Добавляем логирование для кнопки сохранения // Автоматическая очистка полностью пустых форм товаров перед отправкой
document.addEventListener('DOMContentLoaded', function() { document.addEventListener('DOMContentLoaded', function() {
const orderForm = document.getElementById('order-form'); const orderForm = document.getElementById('order-form');
const submitButtons = orderForm.querySelectorAll('button[type="submit"]');
console.log('[FORM DEBUG] Форма найдена:', orderForm); if (!orderForm) return;
console.log('[FORM DEBUG] Кнопки submit найдены:', submitButtons.length);
submitButtons.forEach((btn, index) => { // Обработчик submit - очищаем пустые строки перед валидацией
console.log('[FORM DEBUG] Кнопка', index, ':', btn); orderForm.addEventListener('submit', function(e) {
console.log('[FORM DEBUG] Кнопка disabled?', btn.disabled); // Находим все формы товаров
console.log('[FORM DEBUG] Кнопка type:', btn.type); const itemForms = document.querySelectorAll('.order-item-form');
console.log('[FORM DEBUG] Текст кнопки:', btn.textContent.trim());
// Проверяем disabled при каждом клике itemForms.forEach(form => {
btn.addEventListener('click', function(e) { // Пропускаем уже удалённые формы
console.log('[FORM DEBUG] Клик по кнопке!'); if (form.classList.contains('deleted')) {
console.log('[FORM DEBUG] Event:', e); return;
console.log('[FORM DEBUG] Кнопка disabled на момент клика?', this.disabled); }
console.log('[FORM DEBUG] DefaultPrevented?', e.defaultPrevented);
console.log('[FORM DEBUG] Форма валидна?', orderForm.checkValidity()); // Находим поля
const productField = form.querySelector('[name$="-product"]');
// Проверяем, не блокирует ли что-то отправку const kitField = form.querySelector('[name$="-product_kit"]');
if (this.disabled) { const quantityField = form.querySelector('[name$="-quantity"]');
console.error('[FORM DEBUG] ОШИБКА: Кнопка заблокирована!'); const priceField = form.querySelector('[name$="-price"]');
e.preventDefault(); const idField = form.querySelector('[name$="-id"]');
return false;
// Проверяем значения (пустота = нет значения или значение пустое)
const hasProduct = productField && productField.value && productField.value.trim();
const hasKit = kitField && kitField.value && kitField.value.trim();
const hasQuantity = quantityField && quantityField.value && quantityField.value.trim();
const hasPrice = priceField && priceField.value && priceField.value.trim();
// Если ВСЁ пусто — это мусорная строка, удаляем
const isCompletelyEmpty = !hasProduct && !hasKit && !hasQuantity && !hasPrice;
if (isCompletelyEmpty) {
// Если есть ID (сохранённая позиция) — помечаем на удаление
if (idField && idField.value) {
const deleteCheckbox = form.querySelector('input[name$="-DELETE"]');
if (deleteCheckbox) {
deleteCheckbox.checked = true;
}
form.classList.add('deleted');
form.style.display = 'none';
} else {
// Новая несохранённая форма — просто удаляем из DOM
form.remove();
}
} }
}, true); // Используем capturing phase
}); });
// Слушаем событие submit формы // Всё остальное идёт на валидацию Django как есть
orderForm.addEventListener('submit', function(e) { });
console.log('[FORM DEBUG] Событие submit формы!');
console.log('[FORM DEBUG] Event:', e);
console.log('[FORM DEBUG] DefaultPrevented?', e.defaultPrevented);
}, true);
}); });
</script> </script>