我正在为管理程序创建凭证,我有一个输入字段,该字段计算值并在最后一个列中加上,作为我使用计数器跟踪总和的所有行中的借方和贷方之和,我使用onchange或onblur click事件,它可以很好地计数行数的增加,但是当我尝试从输入中删除值时,它仍然会提示我计数器
这是代码
new String("hello").valueOf() === str2
我想删除值以防万一我从输入字段中删除了值
答案 0 :(得分:0)
我了解您的问题。我们可以这样做吗?
1)触发焦点事件。
2)从总数中减去聚焦元素的值。
如果用户没有从输入中删除完整值。无论如何,我们都会触发模糊事件。因此,它将取走文本框中剩余的所有值并将其计算在内!
答案 1 :(得分:0)
这是一个完整的示例,可以实现您想要的工作(警告:未添加任何样式,因此很丑陋)。您可以将其复制并粘贴到.html
文件中,然后使用您选择的网络浏览器将其打开以查看实际效果:
<!DOCTYPE html>
<html>
<head>
<script
src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
</head>
<body>
<input placeholder="credit field 1" type="text" name="credit" /><br/>
<input placeholder="credit field 2" type="text" name="credit" /><br/>
<input placeholder="credit field 3" type="text" name="credit" /><br/>
<input placeholder="credit field 4" type="text" name="credit" /><br/>
<input placeholder="debit field 1" type="text" name="debit" /><br/>
<input placeholder="debit field 2" type="text" name="debit" /><br/>
<input placeholder="debit field 3" type="text" name="debit" /><br/>
<input placeholder="debit field 4"type="text" name="debit" /><br/>
<input placeholder="credit total" id="get_credit" type="text" /><br/>
<input placeholder="debit total" id="get_debit" type="text" /><br/>
<script>
$(document).on('blur', 'input[name="credit"]', function () {
var total = 0;
$('input[name="credit"]').each(function( index, element ) {
if(!isNaN($(this).val())){
total += Number($(this).val());
}
$('#get_credit').val(total);
});
});
$(document).on('blur', 'input[name="debit"]', function () {
var total = 0;
$('input[name="debit"]').each(function( index, element ) {
if(!isNaN($(this).val())){
total += Number($(this).val());
}
$('#get_debit').val(total);
});
});
</script>
</body>
</html>
您的问题是,跟踪总借方和贷方总额的方式使您无法分别知道每个输入中存储的值。造成的问题是,删除值后,您将无法知道从总数中减去什么。 (同样,如果有人将值从3更改为30,则总数将增加30,而不是27)。
肯定有多种方法可以解决此问题,但是我认为答案是最简单的:在输入模糊时,迭代适当的输入并将它们加在一起,然后将总数分配给适当的输入
请注意,我已经排除了您对输入的id
采取行动的逻辑,因为目前尚不清楚您对它们的处理方式,而无需进一步解释或查看您的视图标记。它似乎也与您要发布的问题无关。