jQuery可以在用户输入数字时添加逗号吗?

Posted

技术标签:

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

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

【问题讨论】:

所以等一下,您想在每个数字后添加一个逗号吗?所以我输入 123456 会变成 1,2,3,4,5,6?或者你只是用逗号替换空格? 作为 macek 的回答,他很可能想要添加数千个分隔符。 【参考方案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(?=(\d3)+(?!\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(?=(\d3)+(?!\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(?=(\d3)+(?!\d))/g, ',');
             else              
     //   alert("lol");     
                cost.value= 0;
                    
        
        </script>

【讨论】:

以上是关于jQuery可以在用户输入数字时添加逗号吗?的主要内容,如果未能解决你的问题,请参考以下文章

用户在输入框中输入小数点时逗号消失

jQuery - 按回车键时添加逗号

使用 jquery 验证器插件仅为 2 个十进制数字 + 点 + 逗号设置正则表达式

添加逗号时如何更新此 jQuery 插件/正则表达式以忽略小数?

C#怎么才能输入3个数字加个逗号

我需要在键入时为数字添加逗号运算符并限制 2 位小数