2016-10-19 3 views
0

So zeigen Sie die Zahl im INR-Format in einem Textfeld an (Eingabetyp = Text). Wenn der Benutzer den Text ändert, sollte er entsprechend im INR-Format formatiert werden.INR-Währungsformat in AngularJs in Eingabetyp = Textfelder

Unten Code funktioniert, wenn wir ng-Modell binden.

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>

im Grunde möchte ich das Eingabefeld selbst Komma getrennt so schnell sein sollte als Benutzer eingeben wird.

Antwort

0

Versuchen Sie folgendes:

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

eigentlich bin ich nicht auf der Suche nach Bindung der ng-Modell Ich möchte das Eingabefeld selbst das Komma getrennt INR-Format enthalten. – Sharath

0

Es sieht aus wie Sie benutzerdefinierte Format auf Eingabefeld möchten.

Sie können dies durch reguläre Ausdrücke und ng-Muster erreichen. Ist es das was du willst ?

+0

ja das ist was ich will. – Sharath