2014-08-27 44 views
2

请看一看这个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,更大......,总和?如何使它与千,百万或十亿的数字一起工作?请帮帮我..

+0

看起来它是工作,我... – RichardBernards 2014-08-27 08:29:54

+0

如果我是(例如)100000 1000000 10000000之间或更大的每个输入字段中输入它不工作比那.. – kroseva 2014-08-27 08:31:26

回答

2

问题是你的替换函数,它只取代第一个','不是全部。在你calculateSum()功能你这样做:

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

我提议

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

代替。或使用RegExp','喜欢这里:

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

尝试它工作正常,我的fiddle

+0

这就是我想要:)谢谢alexvii(你是摇滚) – kroseva 2014-08-27 08:41:37

1

更改替换功能。它取代了逗号只有第一次出现:

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