【问题标题】:INR currency format in AngularJs in input type = text fields输入类型中AngularJs中的INR货币格式=文本字段
【发布时间】:2016-10-19 12:17:49
【问题描述】:

如何在文本框中以 INR 格式显示数字(输入类型=文本)。 因此,当用户不断更改文本时,它应该相应地格式化为 INR 格式。

如果我们绑定 ng-model,下面的代码可以工作。

var app = angular.module('app', []);

app.controller('indexCtrl', function ($scope) {
    $scope.amount = 12564252.33;
});

app.filter('INR', function () {        
    return function (input) {
        if (! isNaN(input)) {
        
            var result = input.toString().split('.');

            var lastThree = result[0].substring(result[0].length - 3);
            var otherNumbers = result[0].substring(0, result[0].length - 3);
            if (otherNumbers != '')
                lastThree = ',' + lastThree;
            var output = otherNumbers.replace(/\B(?=(\d{2})+(?!\d))/g, ",") + lastThree;
            
            if (result.length > 1) {
                output += "." + result[1];
            }            

            return output;
        }
    }
});
<!DOCTYPE html>
<html ng-app="app">
<head>    
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
</head>
<body ng-controller="indexCtrl">
    Input: <input type="text" ng-model="amount">
    <h3>{{amount | INR}}</h3>
</body>
</html>

基本上我希望输入字段本身应该在用户输入时用逗号分隔。

【问题讨论】:

    标签: html angularjs


    【解决方案1】:

    试试这个:

    var app = angular.module('app', []);
    
    app.controller('indexCtrl', function ($scope) {
        $scope.amount = 12564252.33;
    });
    
    app.filter('INR', function () {        
        return function (input) {
            if (! isNaN(input)) {
            
                var result = input.toString().split('.');
    
                var lastThree = result[0].substring(result[0].length - 3);
                var otherNumbers = result[0].substring(0, result[0].length - 3);
                if (otherNumbers != '')
                    lastThree = ',' + lastThree;
                var output = otherNumbers.replace(/\B(?=(\d{2})+(?!\d))/g, ",") + lastThree;
                
                if (result.length > 1) {
                    output += "." + result[1];
                }            
    
                return output;
            }
        }
    });
    <!DOCTYPE html>
    <html ng-app="app">
    <head>    
        <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
    </head>
    <body ng-controller="indexCtrl">
        Input: <input type="text" ng-model="amount">
        <h3>{{ amount | currency : "RS : " }}</h3>
      OR
       <h3>{{ amount | currency : "₹ : " }}</h3>
     
    
    </body>
    </html>

    【讨论】:

    • 实际上我不是在寻找绑定 ng-model 我希望输入字段本身包含逗号分隔的 INR 格式。
    【解决方案2】:

    看起来您希望在输入框上使用自定义格式。

    您可以通过正则表达式和 ng-pattern 来实现。这就是你想要的吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-06
      • 1970-01-01
      相关资源
      最近更新 更多