PageSourceSearch

https://svarkasvarka.ru/mg-templates/moguta/components/amount/amount.js?rev=1788329975

js svarkasvarka.ru collected 2026-09-28 12:20:30 UTC 4,002 bytes, 101 lines download raw bytes

1$(document).ready(function () {
2  let amountWrap = '.js-amount-wrap',
3    amountInput = '.js-amount-input';
4
5  // проводит все проверки введенного количества (num)
6  // запрещается вписывать не кратное минимальному количеству
7  // округляем в меньшую сторону, до допустимого кратнго значения (minAmount)
8  // не больше чем есть на складе
9  function prepareAmount(num, minAmount, maxAmount) {
10    //console.log(num+','+ minAmount+','+  maxAmount);
11    if (isNaN(num)) {
12      num = 0;
13    }
14    if (isNaN(minAmount)) {
15      minAmount = 0;
16    }
17    if (isNaN(minAmount)) {
18      minAmount = 0;
19    }
20    if (num > 0 && num < minAmount) {
21      num = minAmount;
22    }
23    if (num <= 0) {
24      num = minAmount;
25    }
26    if (num >= maxAmount) {
27      num = maxAmount;
28    }
29
30    // если значение в поле больше минимально допустимого,
31    // то вычисляем сколько раз в это значение входит минимально допустимое
32    if (num > minAmount) {
33      // точность после запятой
34      let fix = 0;
35      let str = minAmount.toString();
36      if (str) {
37        let val = str.split('.');
38        if (val && val.length == 2) {
39          fix = val[1].length;
40        }
41      }
42      let count = (num / minAmount).toFixed(fix);
43      count = Math.floor(count);
44      num = (count * minAmount).toFixed(fix);
45    }
46    return num;
47  }
48
49  //увеличение количества товара (страница товара, миникарточка, корзина, страница заказа)
50  $('body').on('click', '.js-amount-change-up', function () {
51    let obj = $(this).parents(amountWrap).find(amountInput);
52    let val = 1 * obj.val();
53    let minAmount = obj.data('increment-count') != 0 ? obj.data('increment-count') : 1;
54    let maxAmount = obj.data('max-count')>0?obj.data('max-count'):9999999;
55
56    val = val + minAmount;
57    val = prepareAmount(val, minAmount, maxAmount);
58    obj.val(val).trigger('change');
59    return false;
60  });
61
62  //уменьшение количества товара (страница товара, миникарточка, корзина, страница заказа)
63  $(document.body).on('click', '.js-amount-change-down', function () {
64    let obj = $(this).parents(amountWrap).find(amountInput);
65    let val = 1 * obj.val();
66    let minAmount = obj.data('increment-count') != 0 ? obj.data('increment-count') : 1;
67    let maxAmount = obj.data('max-count')>0?obj.data('max-count'):9999999;
68
69    val = val - minAmount;
70    val = prepareAmount(val, minAmount, maxAmount);
71    obj.val(val).trigger('change');
72    return false;
73  });
74
75  // Исключение ввода в поле выбора количества недопустимых значений. (страница товара, миникарточка, корзина, страница заказа)
76  $(document.body).on('change', amountInput, function () {
77    let obj = $(this);
78    let val = 1 * obj.val();
79    let minAmount = obj.data('increment-count') != 0 ? obj.data('increment-count') : 1;
80    let maxAmount = obj.data('max-count')>0?obj.data('max-count'):9999999;
81
82    obj.val(prepareAmount(val, minAmount, maxAmount));
83    return false;
84  });
85
86  const amountInputs = document.querySelectorAll(amountInput);
87  for (const inputAmount of amountInputs) {
88    inputAmount.addEventListener('keydown', (e) => {
89      if (e.keyCode === 13) {
90        e.preventDefault();
91        let obj = e.target;
92        let val = 1 * obj.value;
93        let minAmount = obj.dataset.incrementCount != 0 ? obj.dataset.incrementCount : 1;
94        let maxAmount = obj.dataset.maxCount > 0 ? obj.dataset.maxCount :9999999;
95
96        obj.value = prepareAmount(val, minAmount, maxAmount);
97        return false;
98      }
99    });
100  }
101});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.