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

问题描述 投票:0回答:1

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

我也在使用下面的指令

.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;
            });
        }
    };
})

这是我 演示

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

我如何修改这个,你能帮帮我吗?

javascript jquery angularjs
1个回答
0
投票

将小数点的位置从用户的控制中解放出来。

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


print(num)
5999938637.37

0
投票

你可以使用 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)'>
© www.soinside.com 2019 - 2024. All rights reserved.