Как автоматически вставить десятичную дробь в поле ввода

Я использую директиву Angular, которая форматирует числа полей ввода с запятыми. Я также хотел бы, чтобы этот фильтр автоматически вставлял десятичное число для центов. В каждом числе всегда будут задействованы центы. Например, если бы я хотел ввести 1000,00 долларов в поле ввода, мне пришлось бы ввести 100000. Я сделал plunkr, но не могу заставить работать angular

plunkr

app.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)
        });


        ctrl.$parsers.unshift(function (viewValue) {
            var plainNumber = viewValue.replace(/[^\d|\-+|\.+]/g, '');
            elem.val($filter('number')(plainNumber));
            return plainNumber;
        });
    }
};
 }]);

person texas697    schedule 28.09.2014    source источник


Ответы (1)


Наверное вот так?

ctrl.$parsers.unshift(function (viewValue) {
    var plainNumber = viewValue.replace(/[^\d|\-+]/g, ''); //replace even dot and comma
    elem.val($filter('number')(plainNumber/100 , 2)); //use number filter with 2 decimal places and divide the number by 100
    return plainNumber;
});

Plnkr

person PSL    schedule 28.09.2014