Автоматическая очистка полностью пустых форм товаров перед валидацией заказа
This commit is contained in:
@@ -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>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user