Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

Не работает кнопка "купить"


five
 Поделиться

Рекомендованные сообщения

Добрый день. При переносе блока с кнопками "купить" и "быстрый заказ"  немного выше в карточке товара перестаёт работать кнопка "купить". При этом кнопка "быстрый заказ" работает. Подскажите где искать решение.

Сайт sfera.by

Ссылка на комментарий
Поделиться на других сайтах


 

21.12.2022 в 22:13, esculapra сказал:

так воспроизведите непонятку - сейчас все работает

Просто сейчас вернул всё как было до этого.

Сейчас сделаю опять.

Ссылка на комментарий
Поделиться на других сайтах


21.12.2022 в 21:22, five сказал:

 

Кнопка работает, данных только для нее нет тк нет селектора #product на странице

Ссылка на комментарий
Поделиться на других сайтах

попробуй изменить код

<button type="button" id="button-cart" data-loading-text="Загрузка..." class="us-product-btn us-product-btn-active" onClick="addCart()">В корзину</button>
это
<script>
$('#button-cart').on('click', function() {
    $.ajax({
        url: 'index.php?route=checkout/cart/add',
        type: 'post',
        data: $('#product input[type=\'text\'], #product input[type=\'hidden\'], #product input[type=\'radio\']:checked, #product input[type=\'checkbox\']:checked, #product select, #product textarea'),
        dataType: 'json',
        cache: false,
        beforeSend: function() {
            $('#button-cart').button('loading');
        },
        complete: function() {
            $('#button-cart').button('reset');
        },
        success: function(json) {
            $('.alert-dismissible, .text-danger').remove();
            $('.form-group').removeClass('has-error');

            if (json['error']) {
                if (json['error']['option']) {
                    let errorOption = '';
                    for (i in json['error']['option']) {
                        var element = $('#input-option' + i.replace('_', '-'));

                        if (element.parent().hasClass('input-group')) {
                            element.parent().after('<div class="text-danger">' + json['error']['option'][i] + '</div>');
                        } else {
                            element.after('<div class="text-danger">' + json['error']['option'][i] + '</div>');
                        }
                        errorOption += '<div class="alert-text-item">' + json['error']['option'][i] + '</div>';
                    }
                    usNotify('danger', errorOption);
                }

                if (json['error']['error_warning']) {
                    usNotify('danger', json['error']['error_warning']);
                }

                if (json['error']['recurring']) {
                    $('select[name=\'recurring_id\']').after('<div class="text-danger">' + json['error']['recurring'] + '</div>');
                }

                // Highlight any found errors
                $('.text-danger').parent().addClass('has-error');
            }

            if (json['success']) {
                if (json['isPopup']) {
                    octPopupCart();
                } else {
                    usNotify('success', json['success']);
                }

                if(typeof octYandexEcommerce == 'function') {
                    octYandexEcommerce(json);
                }

                // Need to set timeout otherwise it wont update the total
                setTimeout(function () {
                    $('#oct-cart-quantity, .header-cart-index, #mobile_cart_index').html(json['total_products']);
                    $('.us-cart-text').html(json['total_amount']);
                }, 100);
            }
        },
        error: function(xhr, ajaxOptions, thrownError) {
            alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
        }
    });
});
</script>

на это
<script>
function addCart() {
alert('bla-bla-bla');// ну шоб бачити шо все норм.
    $.ajax({
        url: 'index.php?route=checkout/cart/add',
        type: 'post',
        data: $('#product input[type=\'text\'], #product input[type=\'hidden\'], #product input[type=\'radio\']:checked, #product input[type=\'checkbox\']:checked, #product select, #product textarea'),
        dataType: 'json',
        cache: false,
        beforeSend: function() {
            $('#button-cart').button('loading');
        },
        complete: function() {
            $('#button-cart').button('reset');
        },
        success: function(json) {
            $('.alert-dismissible, .text-danger').remove();
            $('.form-group').removeClass('has-error');

            if (json['error']) {
                if (json['error']['option']) {
                    let errorOption = '';
                    for (i in json['error']['option']) {
                        var element = $('#input-option' + i.replace('_', '-'));

                        if (element.parent().hasClass('input-group')) {
                            element.parent().after('<div class="text-danger">' + json['error']['option'][i] + '</div>');
                        } else {
                            element.after('<div class="text-danger">' + json['error']['option'][i] + '</div>');
                        }
                        errorOption += '<div class="alert-text-item">' + json['error']['option'][i] + '</div>';
                    }
                    usNotify('danger', errorOption);
                }

                if (json['error']['error_warning']) {
                    usNotify('danger', json['error']['error_warning']);
                }

                if (json['error']['recurring']) {
                    $('select[name=\'recurring_id\']').after('<div class="text-danger">' + json['error']['recurring'] + '</div>');
                }

                // Highlight any found errors
                $('.text-danger').parent().addClass('has-error');
            }

            if (json['success']) {
                if (json['isPopup']) {
                    octPopupCart();
                } else {
                    usNotify('success', json['success']);
                }

                if(typeof octYandexEcommerce == 'function') {
                    octYandexEcommerce(json);
                }

                // Need to set timeout otherwise it wont update the total
                setTimeout(function () {
                    $('#oct-cart-quantity, .header-cart-index, #mobile_cart_index').html(json['total_products']);
                    $('.us-cart-text').html(json['total_amount']);
                }, 100);
            }
        },
        error: function(xhr, ajaxOptions, thrownError) {
            alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
        }
    });
}
</script>
Изменено пользователем esculapra
Ссылка на комментарий
Поделиться на других сайтах

21.12.2022 в 21:36, spectre сказал:

данных только для нее нет тк нет селектора #product на странице

там только рокировка 2-х кнопок, то есть все данные на странице есть.

Ссылка на комментарий
Поделиться на других сайтах

21.12.2022 в 22:04, five сказал:

Всё равно не работает

короче, сохрани страницу когда работает, и измененную. и запакуй мне в архив. сейчас на 2 часа электрику отключили - до полуночи не будет.

Ссылка на комментарий
Поделиться на других сайтах

21.12.2022 в 23:06, esculapra сказал:

короче, сохрани страницу когда работает, и измененную. и запакуй мне в архив. сейчас на 2 часа электрику отключили - до полуночи не будет.

Ок. Передал в личку

Ссылка на комментарий
Поделиться на других сайтах


Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.