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

Posted

技术标签:

【中文标题】用户在输入框中输入小数点时逗号消失【英文标题】:Commas disappearing when user inputs a decimal point in a input box 【发布时间】:2016-01-15 14:48:49 【问题描述】:

我正在尝试通过 jQuery 实现一个代码,当用户将逗号输入到文本框中时,该代码会自动将逗号输入到大数字中。例如:1,000、1,000,000、10,000。我得到了这个运行,但是当用户尝试输入一个带有小数点的数字时。 1,000.50 逗号消失。

这是自动输入逗号的代码:

$("input[data-type='number']").keyup(function(event)


  // skip for arrow keys
  if(event.which >= 37 && event.which <= 40)
      event.preventDefault();
  
  var $this = $(this);
  var num = $this.val().replace(/,/gi, "");
  var num2 = num.split(/(?=(?:\d3)+$)/).join(",");
  console.log(num2);
  // the following line has been simplified. Revision history contains original.
  $this.val(num2);
);

当用户输入小数点时,如何防止程序删除逗号值?

【问题讨论】:

看起来你的正则表达式不允许小数点。 JS 有 tools 这个... 【参考方案1】:

与其尝试重做 reg exp 以允许小数,您可以拆分小数并在替换后重新加入

var num = $this.val().replace(/,/gi, "").split("."),
    num2 = "";
if (num.length) 
    num[0] = num[0].split(/(?=(?:\d3)+$)/).join(",");
    num2 = num.join(".");

【讨论】:

以上是关于用户在输入框中输入小数点时逗号消失的主要内容,如果未能解决你的问题,请参考以下文章

如何从 .NET 框架 C# 中的文本框中删除双逗号?

Angularjs小数分隔符逗号

用 TextField 中的小数分隔符替换逗号

检测数字格式文化设置

正则表达式添加数千,数百万等逗号(但避免在小数点后添加它们)Javascript

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