在文本框中添加小数点和千位分隔符
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 获取小数和千位分隔符