2010-03-10 107 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)快