Apply currency filter to the input field in angularjs
angularjs, javascript, jquery
Solution
I created a simple directive that handles formatting input fields. Here is a jsfiddle example. To use it add this to your existing code.
<div ng-repeate="item in items">
<input type="text" ng-model="item.cost" format="currency" />
</div>
And add this directive to your code.
// allow you to format a text input field.
// <input type="text" ng-model="test" format="number" />
// <input type="text" ng-model="test" format="currency" />
.directive('format', ['$filter', function ($filter) {
return {
require: '?ngModel',
link: function (scope, elem, attrs, ctrl) {
if (!ctrl) return;
ctrl.$formatters.unshift(function (a) {
return $filter(attrs.format)(ctrl.$modelValue)
});
elem.bind('blur', function(event) {
var plainNumber = elem.val().replace(/[^\d|\-+|\.+]/g, '');
elem.val($filter(attrs.format)(plainNumber));
});
}
};
}]);
Problem
Hi when I am using span tags I can apply the money filter like ``` <div ng-repeat="item in items"> <span> {{item.cost | currency}} </span> </div> ``` I am wondering how I can apply same currency filter in input tag. i.e ``` <div ng-repeat="item in items"> <input type="text" ng-model="item.cost | currency" /> </div> ``` When I try to apply currency filter to the input field as above it doesnt work. Please let me know how to apply currency filter to input field. Thanks