2010-03-10 113 views
52

我有一个包含数值的大约30个文本字段的订单。我想计算所有模糊值的总和。jQuery计算所有文本字段中的值的总和

我知道如何选择所有文本字段,但不知道如何遍历它们并将所有值相加?

$(document).ready(function(){ 
    $(".price").blur(function() { 
    //loop and add up every value from $(".price").val() 
    }) 
}); 
+1

浏览jQuery每个功能(http://api.jquery.com/each/) – Lazarus 2010-03-10 14:29:29

+5

只是想知道一件事。为什么上面发布的被问到的人没有被问到他所做的研究工作。由于发布的问题没有显示任何研究工作或他至少尝试过什么,尤其是当问题不是非常复杂和棘手的问题时。上述问题的解决方案可以很容易地被谷歌收到22票。在投票中没有问题,但研究工作呢?被问及关于研究工作的有关Stack的较少要点的成员是否被问到了? – 2013-08-29 05:37:00

+0

可能重复的[使用jQuery每个函数](http://stackoverflow.com/questions/4377410/sum-using-jquery-each-function) – KyleMit 2016-10-12 13:04:12

回答

164

$('.price').blur(function() { 
    var sum = 0; 
    $('.price').each(function() { 
     sum += Number($(this).val()); 
    }); 

    // here, you have your sum 
});​​​​​​​​​ 
+0

Thx @MarkoDumic但如果我想有点像小计(数量*价格)然后大肆吹捧! – 2016-03-09 19:44:18

+0

对于稍微更优雅的解决方案,您可以使用Array.prototype.reduce:http://stackoverflow.com/a/37466639/1988326 – 2016-05-27 20:20:10

1

使用此功能:

$(".price").each(function(){ 
total_price += parseInt($(this).val()); 
}); 
+1

价格并非总是整数。 – 2010-03-10 14:28:13

+2

我想你会想'parseFloat()' – alex 2010-03-10 14:34:39

1

这应该修复它:

var total = 0; 
$(".price").each(function(){ 
      total += $(this).val() * 1; 
}); 
+5

这将连接从.val()返回的字符串。 – 2010-03-10 15:00:30

+0

来自匿名用户的建议是使用以下内容:'var total = 0; (“。price”)。each(function(){ total + = $(this).val()* 1; });' – Fluffeh 2012-09-18 13:31:05

0
$(".price").each(function(){ 
total_price += parseFloat($(this).val()); 
}); 

请尝试像THI s ...

+1

我不确定你想要这个:''2个苹果“ +“3 oranges”=> 5' – 2012-06-29 13:03:34

+0

我有一个包含数值的大约30个文本字段的订单** ** – JSobell 2014-07-24 06:00:17

+0

我不确定为什么您Marko会认为他的方法适用于除添加值。 – 2014-11-13 08:18:08

21

为您的项目提供更通用的复制/粘贴功能。

sumjq = function(selector) { 
    var sum = 0; 
    $(selector).each(function() { 
     sum += Number($(this).text()); 
    }); 
    return sum; 
} 

console.log(sumjq('.price')); 
+0

我认为你的意思是'.val()'而不是'.text()' – 2015-10-28 18:51:57

+0

@PeterMeth它似乎取决于http://stackoverflow.com/questions/807867/difference-between-val-and-text – ubershmekel 2015-10-28 20:15:00

4

类似地沿着这些答案写成一个插件的行:

$.fn.sum = function() { 
    var sum = 0; 
    this.each(function() { 
     sum += 1*($(this).val()); 
    }); 
    return sum; 
}; 

对于记录1 * x是在铬

0
$('.price').blur(function() { 
    var sum = 0; 
    $('.price').each(function() { 

     if($(this).val()!="") 
     { 
      sum += parseFloat($(this).val()); 
     } 

    }); 
     alert(sum); 
});​​​​​​​​​ 

JS Fiddle比数(X)快