Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.04.2020, 17:20
Аватар для Alex57B
Интересующийся
Отправить личное сообщение для Alex57B Посмотреть профиль Найти все сообщения от Alex57B
 
Регистрация: 01.08.2013
Сообщений: 22

Как правильно добавить числовое значение из input в data-qty
Всем привет!
Суть - есть инпут к которому прикручены кнопки плюс один и минус один. Это в карточке товара такое. Количество из инпута я подставляю 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&quot; никелированный с разъёмным соединением" 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>

Последний раз редактировалось Alex57B, 08.04.2020 в 14:22.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу создать нужное количество объектов с помощью цикла while andrey44 Events/DOM/Window 1 02.02.2020 14:07
Просмотрела исходик jQuery Откорректируйте где не верно taksebe jQuery 5 23.11.2018 22:42
Как и где задать цикл? Blondinka Events/DOM/Window 2 10.06.2014 15:29
Добавление инпута kronter Элементы интерфейса 1 19.04.2014 03:08
Как получить количество дней до определенной даты beard Общие вопросы Javascript 3 24.06.2012 17:22