2016-10-19 5 views
0

Как отобразить номер в формате INR в текстовом поле (тип ввода = текст). Поэтому, когда пользователь продолжает изменять текст, он должен соответственно форматироваться в формате INR.Формат валюты INR в AngularJs в типе ввода = текстовые поля

Ниже код работает, если мы привязываем ng-модель.

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>

в основном я хочу, чтобы поле ввода должен сам быть разделены запятой, как только пользователь печатает.

ответ

0

Попробуйте это:

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>

+0

Фактически я не ищу привязки модели ng. Я хочу, чтобы поле ввода содержало формат INR, разделенный запятыми. – Sharath

0

Похоже, что вы хотите, пользовательский формат на поле ввода.

Вы можете достичь этого с помощью регулярных выражений и ng-pattern. Это то, что вы хотите ?

+0

да вот что я хочу. – Sharath

Смежные вопросы