2017-02-13 13 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とinput_wantedという入力ファイルを持っています。 +または - を押すと何も起こりませんでした。これはソースコードです。

+1

まずコンソールにエラーがあります:ReferenceError:allowBuyWhenOutOfStockが定義されていません また、重複IDを持つことはできません。つまり、quantity_wantedというすべてのIDを持っていますが、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); 
}); 

上記のコードは、(ボタンの「フィールド数量」属性から得られた)名前数量を有する近い数量入力ボックスを検索し、算出量を設定します。

関連する問題