Глючит пересчет стоимости доставки Minishop2
Была нужна дополнительная валидация при отправке заказа.
Условия:
1. Введен город «Челябинск» или «Копейск» — доступны все виды доставки;
2. Введен любой другой город кроме «Челябинск» и «Копейск» — доступен только способ доставки «Почтой» delivery_2
Накидал такой код на JQuery все номально работает, но стал глючить пересчет стоимости доставки:
Заранее спасибо!
Условия:
1. Введен город «Челябинск» или «Копейск» — доступны все виды доставки;
2. Введен любой другой город кроме «Челябинск» и «Копейск» — доступен только способ доставки «Почтой» delivery_2
Накидал такой код на JQuery все номально работает, но стал глючить пересчет стоимости доставки:
$(function(){
$(".ms2_link").click(function() {
if (!$("#delivery_2").is(':checked'))
if (!(($("#city").val() == "Челябинск") || ($("#city").val() == "челябинск") || ($("#city").val() == "ЧЕЛЯБИНСК") || ($("#city").val() == "Копейск") || ($("#city").val() == "копейск") || ($("#city").val() == "КОПЕЙСК"))) {
//alert("BAD");
$.jGrowl("Для вашего города доступна доставка только <b>Почтой</b>", {theme:'ms2-message-error'});
return false;
}
});
});
Причем рандомно — переключишься с первого способа доставки на второй- пересчитает, с третьего на второй не пересчитывает… Как правильно сделать?Заранее спасибо!
Комментарии: 10
наверное проще залезть в default.js и добавить в miniShop2.Order add
if (data.key=="city" ) {
if (data.value=="челябинск") ....
и тд.
}
Спасибо!
Вам нужно написать callback к Order.add
Всем спасибо!
Но почему-то продолжает глючить даже после удаления моего кода и полной очистки кэша:
www.nosemask.ru/cart.html
Даже с другого браузера зашел…
Но почему-то продолжает глючить даже после удаления моего кода и полной очистки кэша:
www.nosemask.ru/cart.html
Даже с другого браузера зашел…
javascript в порядке. у Вас что-то в хендлере заказа. попробуйте переставить minishop2. Либо смотрите свои скрипты php
можешь на этом примере, приблизительно хотя бы, показать как это будет выглядеть? Спасибо!
Примерно так:
miniShop2.Callbacks.Order.add.response.success = function(response) {
for (var key in response.data) {
if (response.data.hasOwnProperty(key)) {
switch (key) {
case 'city':
if (response.data[key] == 'Копейск') {
console.log('Мы в Копейске');
} else {
console.log('Мы не в Копейске');
}
break;
//default:
}
}
}
}
Это в отдельный скрипт и цепляете в своем orderHandler в initialize
спасибо за пример. был бы еще очень признателен за понимание вот этого цепляете в своем orderHandler в initialize
Спасибо!)
Спасибо!)
bezumkin.ru/modx/minishop2/classes/804/
Создаете файл core/components/minishop2/custom/order/msCustomOrderHandler.class.php
В нем делаете таким образом:
Создаете файл core/components/minishop2/custom/order/msCustomOrderHandler.class.php
В нем делаете таким образом:
class msCustomOrderHandler extends msOrderHandler {
public function initialize ($ctx = 'web') {
$this->modx->regClientScript("<script src=\"путь к скрипту\" type=\"text/javascript\"></script>", true);
return true;
}
}
В системных настройках minishop2 прописываете обработчик заказа свой msCustomOrderHandler
+ 1000. Спасибо!
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.