用jQuery计算一组输入的总和

时间:2019-05-16 14:53:30

标签: jquery

我对此的投入很少:

<form>
    <input type="number" name="tax[]">
    <input type="number" name="tax[]">
    <input type="number" name="tax[]">
</form>

我需要在更改或键入时更新这些输入的总和。

所以我的代码如下:

function updatePriceWithTaxe() {

    $('input[name=tax[]]').each(function() {
        sum += Number($(this).val());
    });

    alert(sum);
}

$('input[name=tax[]]').on('change keyup', function() {
    updatePriceWithTaxe();
});

你知道为什么它不起作用吗?

警报不会触发,并且出现此错误:

Error: Syntax error, unrecognized expression: name=STX_Amount[]

谢谢。

3 个答案:

答案 0 :(得分:2)

解析选择器的解析器被表示属性的方括号和名称中的方括号混淆。您必须在属性选择器中用双引号将名称值引起来。

function updatePriceWithTaxe() {
  var sum = 0;
  $('input[name="tax[]"]').each(function() {
    sum += Number($(this).val());
  });

  console.log(sum);
}

$('input[name="tax[]"]').on('change keyup', updatePriceWithTaxe);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form>
  <input type="number" name="tax[]">
  <input type="number" name="tax[]">
  <input type="number" name="tax[]">
</form>

答案 1 :(得分:0)

使用此构造函数键入名称(为名称添加 "

$('input[name="tax[]"]')

updatePriceWithTaxe()应该更改为:

function updatePriceWithTaxe() {
    var sum = 0;
    $('input[name="tax[]"]').each(function(key, element) {
       sum += Number(element.value);
    });

    alert(sum);
}

var sum = 0添加到函数中,因为每次调用updatePriceWithTaxe()时,变量的值必须为 0 ,并且sum用新值计算

答案 2 :(得分:0)

如果您只想计算总和,则可以这样尝试:

const taxInputElements = $('[name="tax[]"]');

taxInputElements.on('change keyup', function(event) {
      let sum = 0;
      taxInputElements.each(function(key, element) {
              sum += Number(element.value);
      });
      console.log("Current sum: " + sum);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form>
    <input type="number" name="tax[]">
    <input type="number" name="tax[]">
    <input type="number" name="tax[]">
</form>