如何制作“自动求和计算”输入字段

How To Make Make Auto Sum Calculation Input Field

本文关键字:计算 输入 字段 求和 何制作      更新时间:2023-09-26

请看一下http://jsfiddle.net/F2wEK/4/:

HTML

cost 1 :<input type="text" class="cost" name="cost1" /><br />
cost 2 :<input type="text" class="cost" name="cost2" /><br />
cost 3 :<input type="text" class="cost" name="cost3" /><br />
cost 4 :<input type="text" class="cost" name="cost4" /><br /><br />
sum : <input type="text" id="sum" readonly />

Javascript

$(document).ready(function(){
    $(".cost").each(
        function(){
        $(this).keyup(
            function(){
            calculateSum()
                });
            });
        });
        function calculateSum(){
            var sum=0;
            $(".cost").each(
            function(){
                var vl = this.value.replace(',','');
                if(!isNaN(vl) && vl.length!=0){
                    sum+=parseFloat(vl);
                    }
                }); 
            $("#sum").val(sum.toFixed(2));
            }
$(document).ready(function(){
  $('input.cost').keyup(function(event){
      // skip for arrow keys
      if(event.which >= 37 && event.which <= 40){
          event.preventDefault();
      }
      var $this = $(this);
      var num = $this.val().replace(/,/gi, "").split("").reverse().join("");
      var num2 = RemoveRougeChar(num.replace(/(.{3})/g,"$1,").split("").reverse().join(""));
      console.log(num2);

      // the following line has been simplified. Revision history contains original.
      $this.val(num2);
  });
});
function RemoveRougeChar(convertString){

    if(convertString.substring(0,1) == ","){
        return convertString.substring(1, convertString.length)            
    }
    return convertString;
}

为什么如果我输入100000,1000000,10000000,更大的…,它不能是自动求和。。。?如何使它与千、百万或十亿数字一起工作?伙计们,请帮帮我。。

问题是替换函数,它只替换第一个',',而不是全部。在calculateSum()函数中,您可以执行以下操作:

var vl = this.value.replace(',', '');

我建议

var vl = this.value.split(',').join('');

相反。或者对','使用RegExp,如下所示:

var myExp = /,/g;
var vl = this.value.replace(myExp, '');

试试小提琴吧,它对我来说很好。

更改替换函数。它只替换第一次出现的逗号:

var vl = this.value.replace(/,/g, '');