2017-02-13 96 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); 
}); 

上面的代碼將發現具有名稱數量(從「場數量」按鈕的屬性而獲得)較近的數量輸入框,並設置所計算出的數量。