onchange必须从存储值的计数器中删除值

piv4azn7  于 2021-06-17  发布在  Mysql
关注(0)|答案(2)|浏览(236)

我正在创建一个凭证,对于一个管理程序,我有一个输入字段,它计算最后一列的值和加值,作为所有行的借方和贷方的总和,我使用计数器来跟踪总和,我使用onchange或onblur click event,它工作得很好,它以行的增加来计数,但是,当我试图从输入中删除值时,它仍然是计数器
这是密码

var credit_counter = 0;
$(document).on('blur', 'input[name="credit[]"]', function () {
  idName = $(this).attr('id');
  id = idName.substring(6, idName.length);
  var value = $(this).val();
  credit_counter = credit_counter + Number(value);
  var credit_balance = $("#get_credit").val(credit_counter)
});

var debit_counter = 0;
var total_balance = 0;

$(document).on('blur', 'input[name="debit[]"]', function () {
  idName = $(this).attr('id');
  id = idName.substring(6, idName.length);
  var value = $(this).val();
  $("#credit" + id).val(value)
  debit_counter = debit_counter + Number(value);
  var debit_balance = $("#get_debit").val(debit_counter);
});

我想删除值,以防我从输入字段中删除值

iyr7buue

iyr7buue1#

下面是一个完整的示例,它实现了您希望执行的操作(警告:没有添加样式,因此很难看)。你可以把它复制粘贴到 .html 文件,然后使用您选择的web浏览器将其打开以查看其运行情况:

<!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 在没有进一步解释或查看视图标记的情况下,不清楚您正在使用它们做什么。它似乎也与你发布的问题无关。

oipij1gg

oipij1gg2#

我理解你的问题。我们可以这样做吗。
1) 在焦点上触发事件。
2) 从总计中减去聚焦元素值。
如果用户没有从输入中删除完整值。不管怎样,我们正在触发模糊事件。所以它将接受文本框中剩余的任何值并计算它!

相关问题