Не меняется итоговая сумма в корзине minishop2 при ручном вводе количества товара
        Подскажите, как сделать так, чтобы итоговая цена заказа в корзине minishop2 менялась при ручном вводе количества товара. Сейчас сумма меняется, если управлять количеством с помощью стрелок.
Также в корзине можно вывести общую сумму для каждого товара с помощью {$product.cost}. Но сумма в {$product.cost} не меняется даже при изменении количества стрелками. Нужно обновлять страницу.
Может кто-то сталкивался с этим, тогда поделитесь пожалуйста, готовым решением? Заранее спасибо.
    
    
                                                                                
            Также в корзине можно вывести общую сумму для каждого товара с помощью {$product.cost}. Но сумма в {$product.cost} не меняется даже при изменении количества стрелками. Нужно обновлять страницу.
Может кто-то сталкивался с этим, тогда поделитесь пожалуйста, готовым решением? Заранее спасибо.
Комментарии: 12
                html
js
                    <div class="quantity">
    <input type="number" name="count" value="1" min="1" >
    <span class="bplus"></span>
    <span class="bminus"></span>
</div>js
$('.bminus').on('click',function () {
    var $input = $(this).parent().find('input');
    var val = +$input[0].defaultValue;
    var count = parseInt($input.val()) - 1;
    count = count < 1 ? 1 : count; 
    $input.val(count);
    $input.change();
    return false;
});
$('.bplus').on('click',function () {
    var $input = $(this).parent().find('input');
    var val = +$input[0].defaultValue; 
    $input.val(parseInt($input.val()) + 1);
    $input.change();
    return false;
});            
                Евгений, Вы немного не поняли мой вопрос. Хотя, то что Вы написали мне пригодится.
Попробую объяснить еще раз, что я хочу. Накидал я, например, в корзину несколько товаров, а затем перешел туда для оформления заказа. В корзине, напротив каждого товара есть поле Количество. Я хочу в одном из товаров поменять количество, допустим с 1 на 100. Ввожу с клавиатуры компьютера/телефона число 100 и мне нужно, чтобы при вводе итоговая сумма всей корзины сразу же пересчитывалась.
                    Попробую объяснить еще раз, что я хочу. Накидал я, например, в корзину несколько товаров, а затем перешел туда для оформления заказа. В корзине, напротив каждого товара есть поле Количество. Я хочу в одном из товаров поменять количество, допустим с 1 на 100. Ввожу с клавиатуры компьютера/телефона число 100 и мне нужно, чтобы при вводе итоговая сумма всей корзины сразу же пересчитывалась.
                Это дефолтный функционал, итоговая сумма пересчитывается: смотрите на minishop2.com.
Вероятно, у вас ошибка в разметке (например нет класса для элемента): prntscr.com/miy9s3
                    Вероятно, у вас ошибка в разметке (например нет класса для элемента): prntscr.com/miy9s3
                Изменение суммы для товара, как-то так:
1. добавляем в корзине элемент с суммой и назначаем ему класс, например: total-price
1. расширяем класс корзины, добавляем в метод change сумму, например назовём элемент: total
2. на фронде в js добавляем:
                    1. добавляем в корзине элемент с суммой и назначаем ему класс, например: total-price
1. расширяем класс корзины, добавляем в метод change сумму, например назовём элемент: total
public function change($key, $count) {
		$packing_desc = '';
		if (array_key_exists($key, $this->cart)) {
			$data = $this->cart[$key];
		}
		$res = parent::change($key, $count);
		
		$add = array(
			'total' => $this->cart[$key]['price'] * $this->cart[$key]['count']
		);
		return $this->response($res, '', $add);
	}документация: docs.modx.pro/komponentyi/minishop2/razrabotka/sluzhbyi/podklyuchenie2. на фронде в js добавляем:
if (typeof miniShop2 != 'undefined') {
miniShop2.Callbacks.Cart.change.response.success = function(response) {
            if (response.success) {
		        var total = $('#' + response.data['key']).find('.total-price');
		        total.text(miniShop2.Utils.formatPrice(response.data.total));              
            }
        };
}            
                Спасибо!
С итоговой суммой для отдельного товара я разобрался, но немного по-другому.
А насчет итоговой суммы я что-то не понимаю. Вставлю гифку, где я меняю количество товара и обратите внимание на итоговую сумму (итоговый вес, итоговое количество) всей корзины. И она в момент ввода количества не меняется.
            
                    С итоговой суммой для отдельного товара я разобрался, но немного по-другому.
А насчет итоговой суммы я что-то не понимаю. Вставлю гифку, где я меняю количество товара и обратите внимание на итоговую сумму (итоговый вес, итоговое количество) всей корзины. И она в момент ввода количества не меняется.
            
                У меня на minishop2.com/cart всё меняется. Посмотрите в консоли js — нет ли каких ошибок.
Вообще проблем никогда не было с корзиной ни в одном браузере.
Не кастомизирован ли файл default.js у вас случайно?
Хотя, похоже вы ожидаете смены значений до потери фокуса у поля количество. Так, да, не будет работать — нужно в js поменять событие на нажатие цифровых клавиш.
                    Вообще проблем никогда не было с корзиной ни в одном браузере.
Не кастомизирован ли файл default.js у вас случайно?
Хотя, похоже вы ожидаете смены значений до потери фокуса у поля количество. Так, да, не будет работать — нужно в js поменять событие на нажатие цифровых клавиш.
Хотя, похоже вы ожидаете смены значений до потери фокуса у поля количество. Так, да, не будет работать — нужно в js поменять событие на нажатие цифровых клавиш.Ну так да. Я об этом и писал несколько раз. Может я не так доходчиво объясняю, раз не сразу понятно о чем идет речь. То, что итоговая стоимость пересчитывается при клике в любую область сайта, так с этим у меня проблем нет. Меня интересовала возможность обновления стоимости при вводе с клавиатуры количества в соотв. поле.
Мне кажется это правильно, что при редактировании количества товара, путем введения нового значения с клавиатуры, сразу видишь результат, т.е. мгновенный перерасчет стоимости, веса и т.д.
                В своём js примерно что-то такое сделайте:
                    $(selector).keyup(function(event) {
     if (event.keyCode == ...) {
            $(selector).trigger('change or blur');
     }
});Это просто навскидку, скорее всего поможет.            
                Спасибо, что подсказали. Вот что у меня получилось в итоге:
Еще подскажите, пожалуйста, как запретить появление всплывающего окна, которое сообщает, что количество товара в корзине изменилось? Мне это пока не нужно для страницы с корзиной.
            
                    $(".input-count").each(function(){
    $(this).keyup(function(event) {
        if (event.keyCode >= 48 && event.keyCode <= 57 || event.keyCode >= 96 && event.keyCode <= 105 || event.keyCode == 8) {
        $(this).trigger("change");
        }
    });
})Т.е. задействовал все цифровые клавиши и backspace. Цена при вводе количества теперь меняется. С телефона проверил, тоже все работает.Еще подскажите, пожалуйста, как запретить появление всплывающего окна, которое сообщает, что количество товара в корзине изменилось? Мне это пока не нужно для страницы с корзиной.
            
                О! За это спасибо!            
                    
                Добрый день. А не дадите код разметки а то тоже такая же задача появилась.            
                    
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.