我有一个非常简单明了的问题。我动态创建输入字段:
id=pend_1, id=pend_2 .....id=pend_14
我需要得到所有输入字段的Sum(),其id从 pend _ * 开始?
为了更清晰,请参见图:
有没有最简单的方法来获取所有输入字段的sum()?
在这种情况下,用户将值放在文本字段中,jquery将使用onBlur()事件计算sum()...
答案 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>