在keyup事件中使用JavaScript添加千位分隔符

时间:2017-02-09 04:40:34

标签: javascript jquery onkeyup

我正在使用以下JavaScript函数为 keyup 事件中的输入数字添加千位分隔符。

$("#inputId").on('keyup', function(evt){
    if (evt.which != 110 && evt.which != 190){ 
        var n = parseFloat($(this).val().replace(/\,/g,''),10);             
        $(this).val(n.toLocaleString());
    }
});

大多数情况下此函数按预期工作,但唯一的问题是输入字段在小数点后不接受零(例如10. 0 1)但它确实接受数字像10. 2 5。我无法弄清楚这种行为的原因。有什么想法吗?

感谢。

1 个答案:

答案 0 :(得分:2)

按小数分割是有效的。像这样的东西。请注意,这是非常基本的起点,并不考虑其他国家/系统中的不同分隔符(即:10.000,00)

<script>
var myinput = document.getElementById('myinput');

myinput.addEventListener('keyup', function() {
  var val = this.value;
  val = val.replace(/[^0-9\.]/g,'');
  
  if(val != "") {
    valArr = val.split('.');
    valArr[0] = (parseInt(valArr[0],10)).toLocaleString();
    val = valArr.join('.');
  }
  
  this.value = val;
});

</script>
<input id="myinput" type="text'>