2017-02-13 94 views
0

我想在我的产品列表中添加数量的增加和减少。这是我在Prestashop 1.6中的代码:增加和减少Prestashop中的产品数量

<script type="text/javascript">// The button to increment the product value 
$(document).on('click', '.product_quantity_up', function(e){ 
     e.preventDefault(); 
     fieldName = $(this).data('field-qty'); 
     var currentVal = parseInt($('input[name='+fieldName+']').val()); 
     if (!allowBuyWhenOutOfStock && quantityAvailable > 0) 
       quantityAvailableT = quantityAvailable; 
     else 
       quantityAvailableT = 100000000; 
     if (!isNaN(currentVal) && currentVal < quantityAvailableT) 
       $('input[name='+fieldName+']').val(currentVal + 1).trigger('keyup'); 
     else 
       $('input[name='+fieldName+']').val(quantityAvailableT); 

     $('#quantity_wanted').change(); 
}); 
// The button to decrement the product value 
$(document).on('click', '.product_quantity_down', 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); 

     $('#quantity_wanted').change(); 
});</script> 
<div class="hide quantity_wanted_flatlist"> 
<p id="quantity_wanted_p"> 
    <input type="number" min="1" name="qty" id="quantity_wanted" class="text" value="1" /> 
    <a href="#" data-field-qty="qty" class="btn btn-default button-minus product_quantity_down"> 
     <span><i class="icon-minus"></i></span> 
    </a> 
    <a href="#" data-field-qty="qty" class="btn btn-default button-plus product_quantity_up"> 
     <span><i class="icon-plus"></i></span> 
    </a> 
    <span class="clearfix"></span> 
</p> 
</div> 

就像你看到我有js和输入字段名为quantity_wanted。当我按+或 - 什么都没有发生。这是一个源代码。

+1

首先,您在控制台中出现错误:ReferenceError:allowBuyWhenOutOfStock未定义 此外,您不能有重复的ID。换句话说,您拥有所有ids quantity_wanted,但它们应该更像quantity_wanted _ {$ id_product}。即使您在添加到购物车中的链接数量为1之后更改了文本框中的数量,仍将添加1。 – sadlyblue

回答

0

根据您分享的链接,您的代码正在工作。数量递增和递减。但是,当我们点击任何相应产品的任何( - )或(+)按钮时,数量变化反映在所有产品中。

发生这种情况的原因恰恰是,当您更新任何产品的数量时,所有输入字段都会显示相同的id名称,然后更新反映所有产品。

解决方案:

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

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

上面的代码将发现具有名称数量(从“场数量”按钮的属性而获得)较近的数量输入框,并设置所计算出的数量。