2017-04-26 52 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中的特定位置? –