如何获取id从相同字符串开始的所有输入字段的Sum()

时间:2017-05-29 06:37:48

标签: jquery html loops

我有一个非常简单明了的问题。我动态创建输入字段:

id=pend_1, id=pend_2 .....id=pend_14

我需要得到所有输入字段的Sum(),其id从 pend _ * 开始?

为了更清晰,请参见图:

enter image description here

有没有最简单的方法来获取所有输入字段的sum()?

在这种情况下,用户将值放在文本字段中,jquery将使用onBlur()事件计算sum()...

5 个答案:

答案 0 :(得分:2)

我们假设有多个Div id="test_1", id="test_2"等...,您可以使用以下方法获取计数

var count = ($("div[id^='test']").length

为了获得总和,你必须编写Anonymous函数,它将结果和元素作为参数As @Rajaprabhu Aravindasamy提到解决方案是正确的,

但是如果输入类型具有NaN值然后将其转换为0,则稍微改变是稍微修改的代码。在这种情况下,如果值为NaN,则可以使用||运算符默认返回0例如。 let a = $('#a').val() || 0;

var sum = $("input[id^='test'][type='text']")
              .get()
              .reduce((res, elm) =>  
                        (res + (+elm.value || 0)), 0);

希望这有助于

答案 1 :(得分:2)

最好将单个类添加到所有这些字段,例如

< input type =“text”class =“sum_item”id =“pend_1”/>

< input type =“text”class =“sum_item”id =“pend_2”/>

并使用以下代码来总结它们

var sum=0;
$('.sum_item').each(function(){
 var item_val=parseFloat($(this).val());
 if(isNaN(item_val)){
  item_val=0;
 }
 sum+=item_val;
 $('#total').val(sum.toFixed(2));
});

答案 2 :(得分:1)

​$("[id^=AAA_][id$=_BBB]") 它将返回与所有指定属性过滤器匹配的所有元素:

  • [id^=AAA_] matches elements with id attribute starting with AAA_,
  • [id$=_BBB] matches elements with id attribute ending with _BBB.

希望这有帮助。

答案 3 :(得分:1)

是的,您可以使用以下代码

来获取它
let sum = $("input[id^='pend_'][type='text']").get()
              .reduce((res, elm) =>  (res + (+elm.value)), 0);

使用starts with selector然后get()元素的数组表示,然后将reduce用于求和。

答案 4 :(得分:1)

$('input[id^="pend_"][type="text"]').on('input',function(){
var sum = 0;
$('input[id^="pend_"][type="text"]').each(function(){
var valu = $(this).val() == '' ? 0 : $(this).val();
if(!isNaN(valu))
{
sum = sum + parseFloat(valu);
}
});

$('label').text(sum);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="pend_1" ><br/>
<input type="text" id="pend_2" ><br/>
<input type="text" id="pend_3" ><br/>
<input type="text" id="pend_4" ><br/>
<input type="text" id="pend_5" ><br/>
Result:<label id="result" value="label"> </label>