Fix: количество — только целое 0–99 (модели, формы, JS)

Made-with: Cursor
This commit is contained in:
2026-02-26 15:51:04 +00:00
parent 97d19a4659
commit 824d5512c7
6 changed files with 86 additions and 6 deletions

View File

@@ -112,11 +112,16 @@
function parseNum(s) {
return parseFloat(String(s).replace(/\s/g, '').replace(',', '.')) || 0;
}
function parseQty(s) {
var n = parseInt(String(s).replace(/\s/g, ''), 10);
if (isNaN(n) || n < 0) return 0;
return n > 99 ? 99 : n;
}
function updateRowAmounts() {
document.querySelectorAll('#order-items .item-row').forEach(function(row) {
var priceInput = row.querySelector('input[name$="-price"]');
var qty = parseNum(row.querySelector('input[name$="-quantity"]')?.value);
var qty = parseQty(row.querySelector('input[name$="-quantity"]')?.value);
var price = parseNum(priceInput?.value);
var el = row.querySelector('.row-amount');
if (el) el.textContent = formatNum(price * qty);
@@ -143,6 +148,10 @@
var n = parseNum(e.target.value);
e.target.value = isNaN(n) ? '' : formatNum(n);
}
if (e.target.name && e.target.name.indexOf('-quantity') !== -1) {
var q = parseQty(e.target.value);
e.target.value = String(q);
}
});
updateRowAmounts();
@@ -199,6 +208,8 @@
el.value = '';
}
});
var qtyInput = clone.querySelector('input[name$="-quantity"]');
if (qtyInput) qtyInput.value = '1';
var amountCell = clone.querySelector('.row-amount');
if (amountCell) amountCell.textContent = '—';
tbody.appendChild(clone);

View File

@@ -124,11 +124,16 @@
function parseNum(s) {
return parseFloat(String(s).replace(/\s/g, '').replace(',', '.')) || 0;
}
function parseQty(s) {
var n = parseInt(String(s).replace(/\s/g, ''), 10);
if (isNaN(n) || n < 0) return 0;
return n > 99 ? 99 : n;
}
function updateRowAmounts() {
document.querySelectorAll('#supplier-order-items .item-row').forEach(function(row) {
var priceInput = row.querySelector('input[name$="-price"]');
var qty = parseNum(row.querySelector('input[name$="-quantity"]')?.value);
var qty = parseQty(row.querySelector('input[name$="-quantity"]')?.value);
var price = parseNum(priceInput?.value);
var el = row.querySelector('.row-amount');
if (el) el.textContent = formatNum(price * qty);
@@ -155,6 +160,10 @@
var n = parseNum(e.target.value);
e.target.value = isNaN(n) ? '' : formatNum(n);
}
if (e.target.name && e.target.name.indexOf('-quantity') !== -1) {
var q = parseQty(e.target.value);
e.target.value = String(q);
}
});
updateRowAmounts();
@@ -209,6 +218,8 @@
el.value = '';
}
});
var qtyInput = clone.querySelector('input[name$="-quantity"]');
if (qtyInput) qtyInput.value = '1';
var amountCell = clone.querySelector('.row-amount');
if (amountCell) amountCell.textContent = '—';
tbody.appendChild(clone);