Javascript 用逗号和点格式化数字

Javascript Formatting Numbers With Commas and Dot

本文关键字:格式化 数字 Javascript      更新时间:2023-09-26

我想创建一个javascript代码来格式化我的输入数字。例如,当用户键入 : 100000 时,它将自动转换为 100,000,如果用户键入 1000.22,它将产生 1,000.22。我创建了这样的代码:

$(document).ready(function(){
  $('input.angka').on("keyup click", 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(""));
      
      // 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;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<input type="text" class="angka form-control" name="hargak" onkeyup="tots();" />

因此,我所有具有"angka"类的输入文本框都将被转换。如果我输入它而不带小数(10000、20000 等),它可以工作。但是当我使用十进制时,这些代码出错了(1000.22 将导致 1,000,.22)任何人都可以修复此代码?

一种可能性...您还应该接受使用左右箭头导航...

$(document).ready(function(){
  $('input.angka').on("keyup click", function(event){
      // skip for arrow keys
      if(event.which >= 37 && event.which <= 40){
          event.preventDefault();
      }
      var $this = $(this);
      var num = $this.val();
      var decs = num.split(".");
      num = decs[0];
      num = num.replace(/,/gi, "").split("").reverse().join("");
      
      var num2 = RemoveRogueChar(num.replace(/(.{3})/g,"$1,").split("").reverse().join(""));
      if(decs.length > 1) {
          num2 += '.' + decs[1];
      }
      $this.val(num2);
  });
});
function RemoveRogueChar(convertString){
    if(convertString.substring(0,1) == ","){
        return convertString.substring(1, convertString.length)
    }
    
    return convertString;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<input type="text" class="angka form-control" name="hargak" onkeyup="tots();" />