Fix: Enable autosave for delivery address fields with partial data
Исправлена проблема с автосохранением полей адреса доставки. Теперь адрес сохраняется при заполнении любого поля, а не только при наличии улицы и номера дома. Изменения в Backend (address_service.py): - Изменена логика валидации в process_address_from_form() - Теперь адрес сохраняется если заполнено хотя бы одно поле - Удалено жёсткое требование заполнения street и building_number - Проверяем наличие данных во всех полях адреса Изменения в Frontend (autosave.js): - Переработана логика сбора данных адреса - address_mode='new' устанавливается при заполнении любого поля адреса - Все непустые поля адреса отправляются на сервер - Используется более элегантный подход с Object.values() и .some() Теперь автосохранение работает корректно: - Заполнение поля "Улица" → автосохранение срабатывает - Заполнение "Номер дома" → автосохранение срабатывает - Заполнение любого другого поля адреса → автосохранение срабатывает - После перезагрузки страницы все данные восстанавливаются 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -371,40 +371,37 @@
|
||||
|
||||
// Поля адреса доставки (новая логика с прямым вводом)
|
||||
const addressStreetField = form.querySelector('input[name="address_street"]');
|
||||
if (addressStreetField && addressStreetField.value) {
|
||||
data.address_street = addressStreetField.value;
|
||||
// Указываем режим "новый адрес" если есть улица
|
||||
data.address_mode = 'new';
|
||||
}
|
||||
|
||||
const addressBuildingField = form.querySelector('input[name="address_building_number"]');
|
||||
if (addressBuildingField && addressBuildingField.value) {
|
||||
data.address_building_number = addressBuildingField.value;
|
||||
}
|
||||
|
||||
const addressApartmentField = form.querySelector('input[name="address_apartment_number"]');
|
||||
if (addressApartmentField && addressApartmentField.value) {
|
||||
data.address_apartment_number = addressApartmentField.value;
|
||||
}
|
||||
|
||||
const addressEntranceField = form.querySelector('input[name="address_entrance"]');
|
||||
if (addressEntranceField && addressEntranceField.value) {
|
||||
data.address_entrance = addressEntranceField.value;
|
||||
}
|
||||
|
||||
const addressFloorField = form.querySelector('input[name="address_floor"]');
|
||||
if (addressFloorField && addressFloorField.value) {
|
||||
data.address_floor = addressFloorField.value;
|
||||
}
|
||||
|
||||
const addressIntercomField = form.querySelector('input[name="address_intercom_code"]');
|
||||
if (addressIntercomField && addressIntercomField.value) {
|
||||
data.address_intercom_code = addressIntercomField.value;
|
||||
}
|
||||
|
||||
const addressInstructionsField = form.querySelector('textarea[name="address_delivery_instructions"]');
|
||||
if (addressInstructionsField && addressInstructionsField.value) {
|
||||
data.address_delivery_instructions = addressInstructionsField.value;
|
||||
|
||||
// Собираем все поля адреса
|
||||
const addressFields = {
|
||||
address_street: addressStreetField?.value || '',
|
||||
address_building_number: addressBuildingField?.value || '',
|
||||
address_apartment_number: addressApartmentField?.value || '',
|
||||
address_entrance: addressEntranceField?.value || '',
|
||||
address_floor: addressFloorField?.value || '',
|
||||
address_intercom_code: addressIntercomField?.value || '',
|
||||
address_delivery_instructions: addressInstructionsField?.value || '',
|
||||
};
|
||||
|
||||
// Проверяем, заполнено ли хотя бы одно поле адреса
|
||||
const hasAnyAddressData = Object.values(addressFields).some(value => value.trim() !== '');
|
||||
|
||||
if (hasAnyAddressData) {
|
||||
// Указываем режим "новый адрес" если заполнено хотя бы одно поле
|
||||
data.address_mode = 'new';
|
||||
|
||||
// Добавляем все непустые поля в данные
|
||||
Object.entries(addressFields).forEach(([key, value]) => {
|
||||
if (value.trim() !== '') {
|
||||
data[key] = value;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
const addressConfirmField = form.querySelector('input[name="address_confirm_with_recipient"]');
|
||||
|
||||
Reference in New Issue
Block a user