0

我正在使用此脚本根据类对输入字段求和,并将结果返回到指定的 id。

尽管我正在努力解决两个功能主义者,但这很有效:

.replace(',',''));只能处理一个逗号,即 1,000 但不能处理多个 1,000,000

我希望返回的结果每隔三个数字放回逗号,.replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,");什么都不做?

$(document).ready(function () {
    $(this).keyup(function () {
        var sum = 0;
        var column2 = $('.left')
        jQuery.each(column2, function (number) {
            sum += parseFloat($(this).val().replace(',', ''));
        });
        $('#total').val(sum).replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,");
    });
});

我已经护目镜并试图找到答案,但找不到任何有效的方法。

非常感谢,

山姆

4

4 回答 4

2

您可以使用以下代码执行此操作

$(document).ready(function(){
  $('#sumup').on('click',function(){ 
    var sum = 0;
    var column2 = $('.sum')
    jQuery.each(column2,function(number){
      sum += parseFloat($(this).val().replace(/\,/g,'') || 0);
      });
    $('#total').text(sum.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1,"));
  });
});​

工作小提琴

于 2012-05-30T13:14:56.333 回答
1

g对所有替换使用(全局)修饰符

sum += parseFloat($(this).val().replace(/,/g,''));

例如

var x = '1,000,000';

x.replace(/,/g,''); // output: 1000000

并在每三位数中加上逗号,请在替换中尝试此操作

/\B(?=(\d{3})+(?!\d))/g, ','

IE

$('#total').val(sum.toString.replace(/\B(?=(\d{3})+(?!\d))/, "$1,");
于 2012-05-30T13:10:08.947 回答
1

最初如何删除逗号:

sum += parseFloat($(this).val().replace(/,/g, ''));

然后,一旦你得到你的总和:

$('#total').val(sum.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ','));
于 2012-05-30T13:11:15.987 回答
0

我喜欢 Joy 的解决方案,但添加了一些更改以消除对 SUM 按钮的需要,而是在用户离开表单的组件字段时重新计算,这对最终用户来说更具交互性和方便性:

$(document).ready(function(){
  $('#sumup1,#sumup2,#sumup3,#sumup4,#sumup5,#sumup6').on('change',function(){ 
    var sum = 0;
    var column2 = $('.sum')
    jQuery.each(column2,function(number){
      sum += parseFloat($(this).val().replace(/\,/g,'') || 0);
      });
    $('#total').text(sum.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1,"));
  });   
}); 

HTML是:

<table>
<tr>
<td><input type="text" id="sumup1" class="sum" value="1,000,000"></td>
</tr>
<tr>
<td><input type="text" id="sumup2" class="sum" value="1,000,000"></td>
...
</table>

<div id="total">6,000,000</div>
于 2014-03-16T10:00:47.183 回答