自定义货币筛选以完全分隔的逗号格式显示金额

时间:2018-01-31 07:57:17

标签: javascript angularjs angularjs-filter

我是AngularJS的新手并且陷入了这个复杂的事情。我必须对HTML输入进行过滤,它将接受数字货币(无字母),逗号应在3位数后自动实现,小数应该在那里,并且应该在左边附加美元符号。

我已经尝试了很多,但结果不是必需的。我制作了这个JavaScript函数,它做了同样的事情,但是如何在输入框中键入时在AngularJS中实现它。

function formatPera(num) {
    var p = num.toFixed(2).split(".");
    return p[0].split("").reverse().reduce(function(acc, num, i, orig) {
        return  num + (i && !(i % 3) ? "," : "") + acc;
    }, "") + "." + p[1];
}

var money = 1234;
money = formatPera(money);

console.log(money);

我已经搜索了很多并检查了已部署的代码。

1 个答案:

答案 0 :(得分:0)

检查以下代码。它在我的最后完美地运作。

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <meta charset="utf-8" />
</head>
<body>
    <div ng-app="app" ng-controller="ctrl">
        <input type="text" ng-model="price"/> <br/>
        {{price | INR}}
    </div>

    <script src="../lib/angular.js"></script>
    <script>
        var app = angular.module('app', []);
        app.filter('INR', function () {
            return function (input) {
                var length = input.length;
                if(input.length <= 3)
                {
                    return input;
                }
                else {
                    var input = input.split(''); 
                    var output = input[length - 3] + input[length - 2] + input[length - 1];
                    var j = 2;
                    for(i=input.length-3;i--;i>=0)
                    {                        
                        if(j>1)
                        {
                            output = ',' + output;
                            j = 0;
                        }
                        if (i >= 0)
                        {
                            output = input[i] + output;
                            j++;
                        }
                    }
                    return output;
                }
            }
        });
        app.controller('ctrl', function ($scope) {
            $scope.price = '4665987565';
        });
    </script>

</body>
</html>