【问题标题】:Can jQuery add commas while user typing numbers?jQuery可以在用户输入数字时添加逗号吗?
【发布时间】:2011-02-07 14:37:19
【问题描述】:

当用户输入数字时,我将如何动态添加逗号?有没有好的数字格式化程序可以提供帮助?我必须稍后添加这些数字,所以我最终必须删除逗号。但屏幕需要显示逗号以提高可读性。

【问题讨论】:

  • 所以等一下,您想在每个数字后添加一个逗号吗?所以我输入 123456 会变成 1,2,3,4,5,6?或者你只是用逗号替换空格?
  • 作为 macek 的回答,他很可能想要添加数千个分隔符。

标签: jquery jquery-plugins


【解决方案1】:

运行代码 sn-p 看看它是否工作

$('input.number').keyup(function(event) {

  // skip for arrow keys
  if(event.which >= 37 && event.which <= 40) return;

  // format number
  $(this).val(function(index, value) {
    return value
    .replace(/\D/g, "")
    .replace(/\B(?=(\d{3})+(?!\d))/g, ",")
    ;
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<input class="number">

【讨论】:

  • 你可以跳过在 keyup 函数中再次调用 jQuery,只需在整个过程中使用它。然后将 var num = $this.val().replace() 更改为 this.value.replace(),将 $this.val(num.replace()) 更改为 this.value = num.replace()。
  • @Bob,我感谢您的意见,但使用 jQuery 的方法以调用 $() 为代价在 jQuery 社区中被广泛接受。这就是 为什么 jQuery 首先拥有可用的方法。
  • 我只是在尝试这段代码,在 Chrome 和 FF 中,它会将逗号错位 1 位。例如,“1234”->“1234”和“12345”->“1,2345”
  • @Naveed(和所有人),早就应该这样做了,但我已经对这段代码进行了更新,使其更加可靠。正则表达式也得到了改进,以解决一些问题。这也允许用户按下退格键并且逗号仍然正确。
  • @maček 我该怎么做,包括小数位?
【解决方案2】:

如果您不想使用 jQuery,这里是 @maček 在 vanilla JS 中的答案的实现:

var el = document.querySelector('input.number');
el.addEventListener('keyup', function (event) {
  if (event.which >= 37 && event.which <= 40) return;

  this.value = this.value.replace(/\D/g, '')
                         .replace(/\B(?=(\d{3})+(?!\d))/g, ',');
});
&lt;input class="number"&gt;

【讨论】:

  • 我这里只能输入4位数字,任何具体原因,因为我会超过4位数字,谢谢
  • 只有在不需要插入小数的情况下才有效。
【解决方案3】:
        <script>
        function costt() {   
        var costs = document.getElementById('cost').value;   
            if(costs != '') {          
     //   alert("ok");     
                cost.value = cost.value.replace(/\D/g, '').replace(/\B(?=(\d{3})+(?!\d))/g, ',');
            } else {             
     //   alert("lol");     
                cost.value= 0;
            }        
        }
        </script>

【讨论】:

    猜你喜欢
    • 2017-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-27
    • 1970-01-01
    • 2015-02-03
    • 2023-02-16
    • 1970-01-01
    相关资源
    最近更新 更多