在文本框中添加小数点和千位分隔符

Posted

技术标签:

【中文标题】在文本框中添加小数点和千位分隔符【英文标题】:add decimal point and thousand separator in to textbox 【发布时间】:2020-08-20 22:26:28 【问题描述】:

我想在我的文本框中添加千位分隔符和小数点。

我也在使用下面的指令

.directive('format', function ($filter) 
    'use strict';

    return 
        require: '?ngModel',
        link: function (scope, elem, attrs, ctrl) 
            if (!ctrl) 
                return;
            

            ctrl.$formatters.unshift(function () 
                return $filter('number')(ctrl.$modelValue);
            );

            ctrl.$parsers.unshift(function (viewValue) 
                var plainNumber = viewValue.replace(/[\,\.]/g, ''),
                    b = $filter('number')(plainNumber);

                elem.val(b);

                return plainNumber;
            );
        
    ;
)

这是我的Demo

我需要修改它。 当用户输入 500,000 时,应该是 500,000.00 用户也可以输入5000.50。

我如何修改这个,你能帮忙

【问题讨论】:

【参考方案1】:

将小数点置于用户控制之外。

num = 599993863737
num = str(num).replace('.','')
num = float(num[:len(num)-2]+'.'+num[-2:])


print(num)
5999938637.37

【讨论】:

【参考方案2】:

您可以使用toFixed()regex

function currency(el)
  a = parseFloat(el.value);
  a = a.toFixed(2);
  a=a.toString();       
  var b = a.replace(/[^\d\.]/g,'');
  var dump = b.split('.');
  var c = '';
  var lengthchar = dump[0].length;
  var j = 0;
  for (var i = lengthchar; i > 0; i--) 
          j = j + 1;
          if (((j % 3) == 1) && (j != 1)) 
                  c = dump[0].substr(i-1,1) + ',' + c;
           else 
                  c = dump[0].substr(i-1,1) + c;
          
  

  if(dump.length>1)
          if(dump[1].length>0)
                  c += '.'+dump[1];
          else
                  c += '.';
          
  
  console.log(c);
<input type='text' onkeyup='currency(this)'>

【讨论】:

以上是关于在文本框中添加小数点和千位分隔符的主要内容,如果未能解决你的问题,请参考以下文章

Javascript 从 NumberFormat 获取小数和千位分隔符

ActionScript 3 将数字格式化为字符串 - 使用小数和千位分隔符

将数字格式化为字符串-带小数和千位分隔符

使用数字和千位分隔符修复格式错误的字符串

如何设置带两位小数的千位分隔符?

Charts.js 使用货币和千位分隔符格式化 Y 轴