Всем привет!
Суть - есть инпут к которому прикручены кнопки плюс один и минус один. Это в карточке товара такое. Количество из инпута я подставляю data-qty атрибут кнопки добавления в корзину.
Проблема - если я только зашел на страницу и ставлю например количество в 5, то добавляется количество 5 в корзину товаров. Дальше без перезагруки страницы всегда добавляется 5, какое бы количество я не выставлял в инпуте.
Код
Инпут
<div id="counter-add-to-cart" class="counter" data-min-qty="1" data-max-qty="10000" data-step-qty="1" style="margin: 16px 0 0 0;"><div class="btn-qty p-decrementer">-</div><input class="p-number-input" type="number" data-min-qty="1" data-max-qty="10000" data-step-qty="1"><div class="btn-qty p-incrementer">+</div></div>
Кнопка
<button id="add-product-to-cart" class="button-add-cart" data-id="P288683" data-artcode="150N3000" data-title="Вентиль ручной HВ 3/4" никелированный с разъёмным соединением" data-price="471.99" data-qty="1" data-unit="шт" data-img="/images/imgshop/b3q7u/Uni-Fitt-150N3000.jpg" data-pcategory="Вентили и клапаны для радиаторов"><i class="fa fa-shopping-cart" aria-hidden="true"></i> Добавить в корзину</button>
JS изменение инпута
/* incrementer functionality */
$("#counter-add-to-cart").on("click", ".p-incrementer", function() {
// incrementerEl$.click(function () {
var parentEl = $(this).parent();
inputValue = parentEl.find('.p-number-input').val();
if(maxAttributeValue){
if(maxAttributeValue==inputValue){
return;
}
}
if(stepAttributeValue){
inputValue = parentEl.find('.p-number-input').val();
parentEl.find('.p-number-input').val((+inputValue)+(+stepAttributeValue)).trigger("input");
return;
}
inputValue = parentEl.find('.p-number-input').val();
parentEl.find('.p-number-input').val(++inputValue).trigger("input");
});
/* decrementer functionality */
$("#counter-add-to-cart").on("click", ".p-decrementer", function() {
// decrementerEl$.click(function () {
var parentEl = $(this).parent();
inputValue = parentEl.find('.p-number-input').val();
if(minAttributeValue){
if(minAttributeValue==inputValue){
return;
}
}
if(stepAttributeValue){
inputValue = parentEl.find('.p-number-input').val();
parentEl.find('.p-number-input').val((+inputValue)-(+stepAttributeValue)).trigger("input");
return;
}
inputValue = parentEl.find('.p-number-input').val();
parentEl.find('.p-number-input').val(--inputValue).trigger("input");
})
JS обработчика корзины
addToCart: function(e) {
e.preventDefault();
itemData = $(this).data();
if(typeof itemData.id === 'undefined') {
console.log('Отсутствует ID товара');
return false;
}
//_paq.push(['addEcommerceItem', String(itemData.id), itemData.title, itemData.pcategory, itemData.price, 1]);
// _paq.push(['trackEcommerceCartUpdate', itemData.price]);
// console.log(itemData);
cartData = actions.getStorage() || {};
if (cartData.hasOwnProperty(itemData.id)) {
cartData[itemData.id].count = +cartData[itemData.id].count + +itemData.qty;
} else {
itemData.count = itemData.qty;
cartData[itemData.id] = itemData;
}
actions.setStorage(cartData);
actions.changeTotalCnt(itemData.qty);
label.show();
if(opts.openByAdding) {
$('a.product-options').modal('hide');
actions.openCart();
}
return false;
},
JS изменения data-qty у кнопки
<script>
$(document).ready(function() {
$("#counter-add-to-cart").on("input", ".p-number-input", function() {
var qtypinput = $(this).val();
$("#add-product-to-cart").attr("data-qty", qtypinput);
});
$("#counter-add-to-cart").htmlNumberSpinner();
});
</script>