jquery增量输入值

时间:2017-05-17 08:45:06

标签: javascript jquery

使用Jquery我需要添加所有输入值。

使用jquery,有没有办法在元素名称中使用regix 喜欢 项[regix_goes_here] [借记]

我需要所有输入的值,我希望它们每个都递增。

我的代码

<input name="items[1][debit]" type="number">
<input name="items[341][debit]" type="number">
<input name="items[31][debit]" type="number">
<input name="items[431][debit]" type="number">

2 个答案:

答案 0 :(得分:0)

首先,为您的输入分配一个类,例如:

<input class="js-inc" name="items[1][debit]" type="number">
<input class="js-inc" name="items[341][debit]" type="number">
<input class="js-inc" name="items[31][debit]" type="number">
<input class="js-inc" name="items[431][debit]" type="number">

现在你可以增加所有这些,甚至没有jquery。使用.value以字符串形式访问该值。使用Number("..")将其转换为数字。添加一个,并将其分配回来。

var inputs = document.querySelectorAll("input.js-inc")
inputs.forEach(function(input) {
    input.value = Number(input.value) + 1
})

这里是live example

答案 1 :(得分:0)

如果您希望将所有输​​入值与name="items[X][Y]"相加,可以通过测试其name属性是否与此/items\[\d+\]\[debit\]/ Regex <匹配来过滤它们/强>

这应该是你的代码:

var sum = 0;
$('input[type="button"]').click(function() {
  $('input').each(function() {
    if ($(this).attr('name') && $(this).attr('name').match(/items\[\d+\]\[debit\]/)) {
      sum += $(this).val() ? parseInt($(this).val()) : 0;
    }
  });
  console.log(sum);
});

<强>演示:

&#13;
&#13;
var sum = 0;
$('input[type="button"]').click(function() {
  $('input').each(function() {
    if ($(this).attr('name') && $(this).attr('name').match(/items\[\d+\]\[debit\]/)) {
      sum += $(this).val() ? parseInt($(this).val()) : 0;
    }
  });
  console.log(sum);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>


<input name="items[1][debit]" type="number" value="2">
<input name="items[341][debit]" type="number" value="2">
<input name="items[31][debit]" type="number" value="2">
<input name="items[431][debit]" type="number" value="2">
<input type="button" value="SUM" />
&#13;
&#13;
&#13;