Minishop2 Обязательные поля для способа оплаты
Всем доброго времени суток!
Есть корзина на сайте (не кликабельная, даю прямую ссылку): lasmik.com/cart
Товары можно добавить отсюда: lasmik.com/dev-page
В корзине есть два способа доставки: Самовывоз и Доставка. У обоих из них есть способ оплаты «Выставление счета для юрлиц». Есть группа полей «Юр. лицо». Поля добавлял по этой инструкции: modx.pro/solutions/10040 Поля работают, в админку все приходит корректно.
Эти поля должны быть обязательны для заполнения только для вышеуказанного способа оплаты.
В minishop2 обязательные поля привязываются к способу доставки, к оплате привязать нельзя. Я решил воспользоваться js калбеками и перехватить событие до отправки заказа:
Однако, как я понял return: false; отправляется еще до валидации обязательных полей, типа адрес и контактные данные (телефон, email и т.д.). И получается так, что валидация полей Юр. лица проходит, а до остальных обязательных полей, привязанных к способам доставки, дело не доходит.
Еще блокируются (disabled) кнопки отправки заказа и очистки данных. И не разблокируются, даже если заполнить все поля. Но это, допустим, я уберу через js. Сейчас не это главная проблема.
Я пробовал экспериментировать с событиями, но безрезультатно. Например, пытался все вышеуказанные манипуляции провести на событие order.submit.ajax.done Типа, отменить заказ после того как данные ушли и были проверены на сервере. В этом случает обе валидации работают, но если заполнить основные (не кастомные) поля заказа, то заказ создается и return: false; вызываемый при проверке полей юр. лица не отменяет его.
Подскажите, пожалуйста, как сделать чтобы обе валидации срабатывали и заказ отправлялся только если обе они прошли.
Зарание спасибо!
Есть корзина на сайте (не кликабельная, даю прямую ссылку): lasmik.com/cart
Товары можно добавить отсюда: lasmik.com/dev-page
В корзине есть два способа доставки: Самовывоз и Доставка. У обоих из них есть способ оплаты «Выставление счета для юрлиц». Есть группа полей «Юр. лицо». Поля добавлял по этой инструкции: modx.pro/solutions/10040 Поля работают, в админку все приходит корректно.
Эти поля должны быть обязательны для заполнения только для вышеуказанного способа оплаты.
В minishop2 обязательные поля привязываются к способу доставки, к оплате привязать нельзя. Я решил воспользоваться js калбеками и перехватить событие до отправки заказа:
miniShop2.Callbacks.add('Order.submit.before', 'order_submit_before', function() {
if ($('[name="payment"]:checked').attr('id') == 'payment_6') { // если выбран способ оплаты Выставление счета
var empty = 0; // счетчик полей юр. лица с ошибкой (в данном случае - пустых)
$('#legal-entity_block input').each(function(i, item) {
if (!$(item).val()) {
$(item).addClass('extfld_error');
empty++;
} else {
$(item).removeClass('extfld_error'); // если поле пустое - добавляем extfld_error
}
});
if (empty > 0) { // если хоть одно поле пустое, возвращаем return false;
return false;
}
}
});
Здесь следующее: если выбран способ оплаты Выставить счет, то проверяем на заполненность поля группы Юр. лицо. Если хотя бы одно поле не заполнено, отменяем формирование заказа вернув return: false;Однако, как я понял return: false; отправляется еще до валидации обязательных полей, типа адрес и контактные данные (телефон, email и т.д.). И получается так, что валидация полей Юр. лица проходит, а до остальных обязательных полей, привязанных к способам доставки, дело не доходит.
Еще блокируются (disabled) кнопки отправки заказа и очистки данных. И не разблокируются, даже если заполнить все поля. Но это, допустим, я уберу через js. Сейчас не это главная проблема.
Я пробовал экспериментировать с событиями, но безрезультатно. Например, пытался все вышеуказанные манипуляции провести на событие order.submit.ajax.done Типа, отменить заказ после того как данные ушли и были проверены на сервере. В этом случает обе валидации работают, но если заполнить основные (не кастомные) поля заказа, то заказ создается и return: false; вызываемый при проверке полей юр. лица не отменяет его.
Подскажите, пожалуйста, как сделать чтобы обе валидации срабатывали и заказ отправлялся только если обе они прошли.
Зарание спасибо!
Комментарии: 2
Столкнулся с такой же проблемой, может быть кто-то знает решение?
Такие вещи, мне кажется, проще на vue или alpine.js делать
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.