Я использую фильтр валют, показанный в «лучшем ответе» в этой теме: Применить фильтр валюты к полю ввода в angularjs
Проблема в том, что мне также нужно, чтобы поле ввода было только числовым, то есть type="number". Он отлично работает с type="text", но когда я пытаюсь объединить их, ввод исчезает, когда текстовое поле теряет фокус.
<div class="table-cell">
<div class="field-label table-cell">Estimated Yearly<br />Savings</div>
<input ng-model="model.yearlySavings" type="number" format="currency">
</div>
JS:
mainModule.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));
});
}
};
}]);
Примечание. Я бы прокомментировал эту ветку, но у меня недостаточно "представителей", чтобы оставить комментарий...