Добавлена поддержка событий 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:
@@ -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';
|
||||
|
||||
Reference in New Issue
Block a user