我有一个动态HTML tbody
,它是在select选项的change事件上创建的,因此在我的表中,我有3个输入字段
ItemName
即autocomplete
,我为此使用jquery UI,因此,当用户选择任何itemName时,我都会将该ItemName的数据填充到表的相应字段中,我拥有的所有数据都在JSON中格式UnitQty
并输入一些内容,然后重点进行一些计算Disc%
,在这里我正在做2-3件事,当用户输入一些输入并按enter
时,我将使用相同的功能和一些计算方法创建与上述相同的新行完成并显示在我命名为Total
的页脚行中Disc%
和我正在做的相同计算中进行聚焦我的问题是什么
当用户在Disc%
中输入一些数据并按tab
时,我正在调用一个函数来计算数据,假设有时用户错误地按了tab
并想去回到Disc%
并创建新行,因此当我按Disc%
回到right Shift+tab
时,由于函数calcDiscount
再次运行,有时需要进行一些计算,有时我回头编辑Disc%
字段,然后运行功能calcDiscount
有时也会错误地使用该方法,在表的输入字段中将某些字段留空,我试图在用户离开任何空字段时发出警报,但这也无济于事
请签出fiddle 我在做下面的事情
$(document).keypress(function (event) {
const row = event.target.parentElement.parentElement
var keycode = event.keyCode || event.which;
if (keycode == '13') {
if (event.target.matches('[name=discPercentagetd]')) {
calcDiscount(event.target.parentElement.parentElement)
if ($(row).parent().find('tr').length - $(row).index() === 1) {
rowappend(event.target.parentElement.parentElement.parentElement)
}
}
}
});
document.addEventListener("keydown", function (event) {
const row = event.target.parentElement.parentElement
if (event.target.matches('[name=discPercentagetd]')) {
var keycode = event.keyCode || event.which;
if (keycode == '9') {
calcDiscount(event.target.parentElement.parentElement)
}
}
});
请查看我的小提琴,我已在其中注释了所有内容
注意-:输入DIsc%
后,请使用Disc%
进行焦点调整后返回rightShift+tab
,并在页脚中自动看到unitQty
增加
答案 0 :(得分:1)
您需要将所有值设置为0,然后通过遍历所有行来计算值,
像这样
total = 0;
totalDiscountAmt = 0;
totalGstAmt = 0;
totalUnitQty = 0;
subtotal = 0;
$("#tableInvoice tbody tr").each(function() {
if (!$(event.target).val()) {
e.preventDefault();
return;
}
calc(this)
calcDiscount(this)
})
在此处查看更新的小提琴https://jsfiddle.net/pLcexr6t/