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

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);
console.log('[FORM DEBUG] Кнопка disabled?', btn.disabled);
console.log('[FORM DEBUG] Кнопка type:', btn.type);
console.log('[FORM DEBUG] Текст кнопки:', btn.textContent.trim());
// Проверяем disabled при каждом клике
btn.addEventListener('click', function(e) {
console.log('[FORM DEBUG] Клик по кнопке!');
console.log('[FORM DEBUG] Event:', e);
console.log('[FORM DEBUG] Кнопка disabled на момент клика?', this.disabled);
console.log('[FORM DEBUG] DefaultPrevented?', e.defaultPrevented);
console.log('[FORM DEBUG] Форма валидна?', orderForm.checkValidity());
// Проверяем, не блокирует ли что-то отправку
if (this.disabled) {
console.error('[FORM DEBUG] ОШИБКА: Кнопка заблокирована!');
e.preventDefault();
return false;
}
}, true); // Используем capturing phase
});
// Слушаем событие submit формы
orderForm.addEventListener('submit', function(e) { orderForm.addEventListener('submit', function(e) {
console.log('[FORM DEBUG] Событие submit формы!'); // Находим все формы товаров
console.log('[FORM DEBUG] Event:', e); const itemForms = document.querySelectorAll('.order-item-form');
console.log('[FORM DEBUG] DefaultPrevented?', e.defaultPrevented);
}, true); itemForms.forEach(form => {
// Пропускаем уже удалённые формы
if (form.classList.contains('deleted')) {
return;
}
// Находим поля
const productField = form.querySelector('[name$="-product"]');
const kitField = form.querySelector('[name$="-product_kit"]');
const quantityField = form.querySelector('[name$="-quantity"]');
const priceField = form.querySelector('[name$="-price"]');
const idField = form.querySelector('[name$="-id"]');
// Проверяем значения (пустота = нет значения или значение пустое)
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();
}
}
});
// Всё остальное идёт на валидацию Django как есть
});
}); });
</script> </script>