Добавлена поддержка событий Select2 в draft-creator.js

Поля с Select2 не генерируют стандартные события 'change',
поэтому добавлено прослушивание событий 'select2:select'.
Также добавлено логирование для отладки.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-08 23:18:49 +03:00
parent 1e97ec533e
commit be79730ee3

View File

@@ -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';