我有一个动态的html tbody
,我在选择选项的更改事件上创建,因此在我的表格中,我有3个输入字段
-
ItemName
是autocomplete
我正在为此使用jQuery UI,因此当用户选择任何ItemName时,我将该ItemName的数据填充到表的相应字段中,我拥有的所有数据均以JSON格式 - 然后,用户转到下一个输入字段,即
UnitQty
并输入某些内容,并从中焦点我正在进行一些计算 - 那么最后一个输入字段是
Disc%
,在这里我正在做2-3件事,当用户输入一些输入并按enter
时,我正在创建与上面相同功能的新行,并且在页脚行中进行了一些计算,并显示了一些计算我命名为Total
- 当用户想创建新行时,只有他/她将按Enter键按否则按下
Disc%
和相同的计算,我正在做
我的问题是
-
当用户输入
Disc%
内的某些数据并按tab
时,我正在调用一个函数来计算数据,假设有些次用户错误地按tab
,想返回Disc%
并创建新行,因此通过按right Shift+tab
返回到Disc%
,随着函数calcDiscount
再次运行,它给出了一些计算,有时如果我回头编辑Disc%
字段,则它还运行函数calcDiscount
-
有时也会被错误地使用,请在表输入字段中丢下一些空的字段,每当用户离开任何空字段时,我都尝试提醒,但这也没有帮助
请检查小提琴我在下面做
$(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%
后,请在使用rightShift+tab
聚焦后返回到Disc%
,然后在页脚中查看unitQty
,IT Auto IT Auto Ink
您需要将所有值设置为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/