@Xtrm777

Скрипт срабатывает дважды, как исправить?

Всем привет. Стоит opencart 3.0.3.3, при нажатии на кнопку плюс или минус в товаре, товар в количестве отображается с шагом 2, то есть 2,4,6,8 и т.д.. Скрипт почему-то срабатывает дважды. Помогите, пожалуйста разобраться в чем проблема. Код прилагаю. Ссылку на пример товара тоже https://edelveystex.ru/zhenskij-trikotazh/halaty/h...
/* Quantity plus minus - Product Detail
 ========================================================*/
$(function ($) {
    "use strict";
    $.initQuantity = function ($control) {
        $control.each(function () {
            var $this = $(this),
                data = $this.data("inited-control"),
                $plus = $(".input-group-addon:last", $this),
                $minus = $(".input-group-addon:first", $this),
                $value = $(".form-control", $this);
            if (!data) {
                $control.attr("unselectable", "on").css({
                    "-moz-user-select": "none",
                    "-o-user-select": "none",
                    "-khtml-user-select": "none",
                    "-webkit-user-select": "none",
                    "-ms-user-select": "none",
                    "user-select": "none"
                }).bind("selectstart", function () {
                    return false
                });
                $plus.click(function () {
                    console.log($value.val())
                    if (!$($value).is('.size-quantity:disabled') && !($($value).is('.main-quantity') && $('.all-sizes:checked').length == 0)) {
                        var val = parseInt($value.val()) + 1;
                        $value.val(val);

                        if ($($value).is('.main-quantity') && $('.all-sizes:checked').length > 0) {
                            $('.size-quantity').val($($value).val());
                        }

                        if ($($value).is('.size-quantity') && $('.all-sizes:checked').length === 0) {
                            $('.main-quantity').val($.map($('.size-quantity'),(s)=> parseInt($(s).val())).reduce((c,b)=> c+b,0));
                        }
                        getProductSummary();
                    }
                    return false
                });
                $minus.click(function () {
                    if (!$($value).is('.size-quantity:disabled') && !($($value).is('.main-quantity') && $('.all-sizes:checked').length == 0)) {
                        var val = parseInt($value.val()) - 1;
                        $value.val(val > -1 ? val : 0);
                        if ($($value).is('.main-quantity') && $('.all-sizes:checked').length > 0) {
                            $('.size-quantity').val($($value).val());
                        }

                        if ($($value).is('.size-quantity') && $('.all-sizes:checked').length === 0) {
                            $('.main-quantity').val($.map($('.size-quantity'),(s)=> parseInt($(s).val())).reduce((c,b)=> c+b,0));
                        }
                        getProductSummary();
                    }
                    return false
                });
                $value.blur(function () {
                    if (!$($value).is('.size-quantity:disabled') && !($($value).is('.main-quantity') && $('.all-sizes:checked').length == 0)) {
                        var val = parseInt($value.val());
                        $value.val(val > -1 ? val : 0);
                        if ($($value).is('.main-quantity') && $('.all-sizes:checked').length > 0) {
                            $('.size-quantity').val($($value).val());
                        }

                        if ($($value).is('.size-quantity') && $('.all-sizes:checked').length === 0) {
                            $('.main-quantity').val($.map($('.size-quantity'),(s)=> parseInt($(s).val())).reduce((c,b)=> c+b,0));
                        }
                        getProductSummary();
                    }
                })
            }
        })
    };
    $.initQuantity($(".quantity-control"));
    $.initSelect = function ($select) {
        $select.each(function () {
            var $this = $(this),
                data = $this.data("inited-select"),
                $value = $(".value", $this),
                $hidden = $(".input-hidden", $this),
                $items = $(".dropdown-menu li > a", $this);
            if (!data) {
                $items.click(function (e) {
                    if ($(this).closest(".sort-isotope").length >
                        0) e.preventDefault();
                    var data = $(this).attr("data-value"),
                        dataHTML = $(this).html();
                    $this.trigger("change", {
                        value: data,
                        html: dataHTML
                    });
                    $value.html(dataHTML);
                    if ($hidden.length) $hidden.val(data)
                });
                $this.data("inited-select", true)
            }
        })
    };
    $.initSelect($(".btn-select"))
});
  • Вопрос задан
  • 175 просмотров
Решения вопроса 1
ArsenyMatytsyn
@ArsenyMatytsyn Куратор тега JavaScript
Руководитель frontend направления, предприниматель
Подключай скрипты в единичном количестве к странице.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Xtrm777 Автор вопроса
Арсений Матыцин можно подробнее пояснить, пожалуйста
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы