【问题标题】:Add thousand separator with JavaScript on keyup event在 keyup 事件上使用 JavaScript 添加千位分隔符
【发布时间】:2017-02-09 04:40:34
【问题描述】:

我正在使用以下 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.01),但它接受数字像 10.25 。我无法弄清楚这种行为的原因。有什么想法吗?

谢谢。

【问题讨论】:

  • 解析会删除0,因为它没有任何值1.0 => 1
  • parseFloat(x,10) 是做什么的? MDN says it has only one argument
  • parseFloat 没有任何基数参数....所以添加第二个参数没有任何意义
  • 出于好奇,千位分隔符到底是什么?
  • @FlyingGambit toLocaleString() 将添加千位分隔符(对我来说是“,”)。

标签: javascript jquery onkeyup


【解决方案1】:

按小数分割会起作用。像这样的东西。请注意,这是非常基本的起点,不考虑其他国家/系统中的不同分隔符(即: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>
&lt;input id="myinput" type="text'&gt;

【讨论】:

  • 感谢您的回答,似乎对我的情况有用。
  • @creative 后 15 位输入的值变为零。是什么原因??
猜你喜欢
  • 2012-07-12
  • 1970-01-01
  • 2012-10-21
  • 2015-07-12
  • 2021-04-19
  • 1970-01-01
相关资源
最近更新 更多