jQuery计算所有文本字段中的值的总和

ste*_*tef 69 jquery

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

我知道如何选择所有文本字段但不知道如何循环它们并添加所有值?

$(document).ready(function(){
   $(".price").blur(function() {
    //loop and add up every value from $(".price").val()
   })
});
Run Code Online (Sandbox Code Playgroud)

Mar*_*mic 195

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

    // here, you have your sum
});?????????
Run Code Online (Sandbox Code Playgroud)


ube*_*kel 24

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

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

console.log(sumjq('.price'));
Run Code Online (Sandbox Code Playgroud)


mar*_*iro 7

如果您不需要支持IE8,那么您可以使用本机Javascript Array.prototype.reduce()方法.您需要首先将JQuery对象转换为数组:

 var sum = $('.price').toArray().reduce(function(sum,element) {
     if(isNaN(sum)) sum = 0;
     return sum + Number(element.value);
 }, 0);
Run Code Online (Sandbox Code Playgroud)

参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce


Bro*_*ies 5

同样沿着这些作为插件编写的答案的路线:

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

记录 1 * x 比 Chrome 中的 Number(x) 快