使用jQuery总计类似的输入名称

时间:2013-04-19 18:48:11

标签: jquery

我有一些动态创建的输入,名称/ ID增加。我想:

  1. 查找所有空白输入并用零填充
  2. 总计所有输入的数字
  3. 将该总数放入不同的输入
  4. 我正在使用jQuery 1.9.1。

    这样的行:

    <input type="text" name="Amount1" id="Amount1" value="0" class="Amount">
    <input type="text" name="Amount2" id="Amount2" value="" class="Amount">
    <input type="text" name="Amount3" id="Amount3" value="10" class="Amount">
    <input type="text" name="Amount4" id="Amount4" value="150" class="Amount">
    

    并将总数放在:

    <input type="text" name="Totals" id="Totals" value="" class="Totals">
    

    这是我的想法可能有用,但甚至不是很接近:

    $('input[name^="Amount"]').each(function(){
        var emptyTextBoxes = $('input:text').filter(function() { return this.value == ""; });
        emptyTextBoxes.each(function() {
            //total up numbers
              ???
        });
    });
    

3 个答案:

答案 0 :(得分:2)

当然,这可以做得更轻松;第一个语句已经选择了您需要的所有输入字段:

var total = 0;

$('input[name^="Amount"]').each(function() {
    total += parseInt(this.value, 10) || 0;
});

$('#Totals').val(total);
空值上的

parseInt()将返回NaN,因此我使用|| 0构造有效地跳过它们(即将0添加到总数中)

答案 1 :(得分:0)

你可以总结一下:

var total = 0;

emptyTextBoxes.each(function() {
    total += parseInt(this.value, 10);
});

.map()以及更新的浏览器:

var total = emptyTextBoxes.map(function() {
    return parseInt(this.value, 10);
}).get().reduce(function(a, b) {
    return a + b;
});

答案 2 :(得分:0)

var total = 0;
$(".Amount").each(function() {
    if (this.value == '') { this.value = 0; }
    total += parseInt(this.value);
});
$('.Totals').val(total);

http://jsfiddle.net/jfGbq/