Автор Тема: Проблема со скриптом добавлением товара кнопками плюс минус в карточке  (Прочитано 517 раз)

08 Май 2017, 23:05:33
  • Новичок
  • *
  • Сообщений: 3
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Всем привет!
Столкнулся с такой проблемой, нужно как-то доработать скрипт, добавляющий в карточку товара кнопки плюс и минус, для изменения количества единиц товара, добавляемого в корзину. Сам по себе он работает нормально, при нажатии плюса или минуса, добавляется или убирается одна единица в поле INPUT, но стоит только воспользоваться фильтром, у товаров работа этих кнопок сбивается и начинает добавлять не 1 единицу, а сразу несколько, и чем больше пользоваться фильтром, тем большее количество единиц товара прибавляется при нажатии.
Собственно, нужно сделать, чтоб каждый при выборе пункта фильтра значение сбрасывалось...собственно скрипт клавиш плюс и минус ниже:

В Ajax-cart.js ввожу сам скрипт

// The button to increment the product value
$(document).on('click', '.product_quantity_incr', function(e){
    e.preventDefault();
    fieldName = $(this).data('field-qty');
    var currentVal = parseInt($('input[name='+fieldName+']').val());
quantityAvailableT = 100000000;
    if (!isNaN(currentVal) && currentVal < quantityAvailableT)
        $('input[name='+fieldName+']').val(currentVal + 1).trigger('keyup');
    else
        $('input[name='+fieldName+']').val(quantityAvailableT);
});
 // The button to decrement the product value
$(document).on('click', '.product_quantity_decr', function(e){
    e.preventDefault();
    fieldName = $(this).data('field-qty');
    var currentVal = parseInt($('input[name='+fieldName+']').val());
    if (!isNaN(currentVal) && currentVal > 1)
        $('input[name='+fieldName+']').val(currentVal - 1).trigger('keyup');
    else
        $('input[name='+fieldName+']').val(1);
});

в product-list.tpl сам код:
<input type="number" min="1" name="qty_{$product.id_product|intval}" id="quantity_to_cart_{$product.id_product|intval}" class="text" value="1" />
<a href="#" data-field-qty="qty_{$product.id_product|intval}" class="btn btn-default button-minus product_quantity_decr">
<span><i class="icon-minus"></i></span>
</a>
<a href="#" data-field-qty="qty_{$product.id_product|intval}" class="btn btn-default button-plus product_quantity_incr">
<span><i class="icon-plus"></i></span>
</a>

Подскажите, как подправить, может проверку добавить в скрипт ? Не пойму в чем проблема, вроде должно одну единицу всегда прибавлять, почему при использовании стандартного фильтра сбивается этот порядок ?

Спасибо
09 Май 2017, 10:57:20
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 1808
  • Репутация: +49/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Функцию нужно в файл product.js добавить, если для карточки. В product.tpl разметку
<a href="#" data-field-qty="qty" class="button-minus product_quantity_down"><i class="icon-minus">-</i></a>
<input type="text" name="qty" id="quantity_wanted" class="text" value="{if isset($quantityBackup)}{$quantityBackup|intval}{else}{if $product->minimal_quantity > 1}{$product->minimal_quantity}{else}1{/if}{/if}" />
<a href="#" data-field-qty="qty" class="button-plus product_quantity_up"><i class="icon-plus">+</i></a>
09 Май 2017, 11:25:19
Ответ #2
  • Новичок
  • *
  • Сообщений: 3
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Дак мне в каталоге нужны кнопки, а не карточке продукта, оэтому я в product-list.tpl добавлял, или нужно и в product.tpl продублировать ?