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

Mat*_*att 32 jquery jquery-plugins

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

mač*_*ček 88

运行代码段以查看它是否有效

$('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, ",")
    ;
  });
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<input class="number">
Run Code Online (Sandbox Code Playgroud)

  • 我只是在试用这段代码,在Chrome和FF中,它将逗号放错了1位.例如,"1234" - >"1234"和"12345" - >"1,2345" (3认同)
  • @Naveed(以及所有人),它已经姗姗来迟,但我已对此代码进行了更新,以使其更加可靠.正则表达式已得到改进,以解决一些问题.这也允许用户按退格键并且逗号仍然正确. (3认同)
  • @maček 我如何做到这一点,包括小数位? (2认同)

abo*_*ron 6

如果你不想使用 jQuery,这里是 @ma\xc4\x8dek\'s 答案在 vanilla JS 中的实现:

\n\n

\r\n
\r\n
var el = document.querySelector(\'input.number\');\r\nel.addEventListener(\'keyup\', function (event) {\r\n  if (event.which >= 37 && event.which <= 40) return;\r\n\r\n  this.value = this.value.replace(/\\D/g, \'\')\r\n                         .replace(/\\B(?=(\\d{3})+(?!\\d))/g, \',\');\r\n});
Run Code Online (Sandbox Code Playgroud)\r\n
<input class="number">
Run Code Online (Sandbox Code Playgroud)\r\n
\r\n
\r\n

\n

  • 仅当我不需要插入小数时它才有效。 (2认同)