@eellazy

Как вернуть значение кнопки после удаление из корзины?

Всем привет!

Есть кнопка
<button type="button" class="btn-cart" onclick="cart.add('<?php echo $product['product_id']; ?>', '<?php echo $product['minimum']; ?>');">
                                    <i class="pe-7s-cart"></i>Добавить в корзину
                                </button>


После нажатия на добавить в корзину, надпись заменяется на "Купить"
$('[onclick *= "\''+product_id+'\'"][onclick *= "cart.add"]').html('Куплено').attr("disabled", true);


Как теперь после удаления товара из корзины вернуть надпись "Добавить в корзину"?

Вот код удаления из корзины
'remove': function(key) {
        $.ajax({
            url: 'index.php?route=checkout/cart/remove',
            type: 'post',
            data: 'key=' + key,
            dataType: 'json',
            beforeSend: function() {
                $('#cart > button').button('');
            },
            complete: function() {
                $('#cart > button').button('reset');
            },
            success: function(json) {
                $('[onclick *= "\''+product_id+'\'"][onclick *= "cart.add"]').html('Добавить в корзину').attr("disabled", false);
                setTimeout(function() {
                    $('#cart > button').html('<i class="pe-7s-cart"></i><span id="cart-total" class="icon-total">' + json['total'] + '</span>');
                }, 100);
                if (getURLVar('route') == 'checkout/cart' || getURLVar('route') == 'checkout/checkout') {
                    location = 'index.php?route=checkout/cart';
                } else {
                    $('#cart > ul').load('index.php?route=common/cart/info ul li');
                }
                yaCounter47502994.reachGoal('push_del_in_cart');
            },
            error: function(xhr, ajaxOptions, thrownError) {
                alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
            }
        });
    }
}


Ошибка во время удаления - product_id is not defined
  • Вопрос задан
  • 157 просмотров
Решения вопроса 1
Immortal_pony
@Immortal_pony Куратор тега JavaScript
Функция "remove" у вас принимает некий "key", который, предположу, является уникальным ключом для продукта+комбинации значени его дополнительных опций.
Можно попробовать дополнительно передавать product_id в явном виде.

Тогда функцию "remove" надо изменить примерно следюущим образом:
'remove': function(key, product_id) {
...            
}


Далее, необхомио будет изменить все места где эта функция вызывается, добавив передачу параметра "product_id"
Примерно так:
<button onclick="cart.remove('<?= $product['cart_id'] ?>', '<?= $product['product_id'] ?>');">Удалить</button>


Возможно также понадобится внести измнения в контроллер, чтобы в представлении была возможность использовать перемнную product_id. Примерно так:
$data['products'][] = [
    'product_id'   => $product['product_id'],
    ...
]
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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