2017-04-26 53 views
0

Prestashop v1.6.1.13 default-bootstrap主題。更改屬性的產品增量值

當我在product.js

// 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 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 + 2).trigger('keyup'); //this line changed 
    else 
     $('input[name='+fieldName+']').val(quantityAvailableT); 
    $('#quantity_wanted').change(); 
}); 

我能2 qauntity輸入改變值高達每一次,當我按下增加按鈕時,但是當我把代碼minimalQuantity和代碼看起來像這樣:$('input[name='+fieldName+']').val(currentVal + minimalQuantity).trigger('keyup');這隻適用於產品witout屬性。如果產品具有屬性,這是行不通的,似乎minimalQuantity沒有屬性的產品給出了正確的值,但對於具有屬性的產品值始終是1.我該如何解決它?

+0

在哪裏宣佈你的** minimalQuantity **變量?你如何定義一個有/沒有屬性的產品? – Mils

+0

在產品的屬性組合是選項爲'minimalQuantity'設置爲低於從product.js主題這個代碼值爲'如果(typeof運算minimalQuantity = '未定義' && minimalQuantity!) \t { \t \t checkMinimalQuantity(); \t \t $(文件)。在( 'KEYUP', '輸入[名稱=數量]',函數(E){ \t \t \t checkMinimalQuantity(minimalQuantity); \t \t}); \t}' –

+0

我仍然困惑,你可以在這裏添加一個jsfiddle或一個片段? – Mils

回答

0

在產品頁面上,您有一個全球JS變量combinations,其中存儲有關組合的所有信息。它被包含在DOM中,所以你可以在那裏搜索它。可變的

例子:

var combinations = 
{ 
    "31": { 
    "attributes_values": { 
     "1": "S", 
     "3": "Yellow" 
    }, 
    "attributes": [ 
     1, 
     16 
    ], 
    "price": 0, 
    "specific_price": false, 
    "ecotax": 0, 
    "weight": 0, 
    "quantity": 300, 
    "reference": "", 
    "unit_impact": 0, 
    "minimal_quantity": "1", 
    "date_formatted": "", 
    "available_date": "", 
    "id_image": 16, 
    "list": "'1','16'" 
    }, 
    ... 
} 

所以,你需要從列表中獲取上述選擇的組合標識的對象內minimal_quantity變量。

// The button to increment the product value 
$(document).on('click', '.product_quantity_up', function(e){ 
    e.preventDefault(); 
    fieldName = $(this).data('field-qty'); 
    var curCombinationId = $('#idCombination').val(); 
    var minCombinationQty = minimalQuantity; // set default product minimal quantity 
    if (combinations != 'undefined') { // check if product has combinations 
     for (var combData in combinations) { 
      if (combData.idCombination == curCombinationId) { 
       minCombinationQty = parseInt(combData.minimal_quantity); 
       break; 
      } 
     } 
    } 
    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 + minCombinationQty).trigger('keyup'); 
    else 
     $('input[name='+fieldName+']').val(quantityAvailableT); 

    $('#quantity_wanted').change(); 
}); 
+0

當我在源代碼中使用product.js:console.log(組合)時,我發現這個屬性的組合對於minimal_quantity正確的值,但我不知道如何將它用於product.js中的此產品和常規產品? –

+0

@AgnesTom我已經更新了答案。 – TheDrot

+0

感謝您的更新,我只是檢查此代碼,這不適合我。也許我必須將這些代碼放在product.js中的特定位置? –