一尘不染

带有货币掩码指令的角度输入字段,用于即时生成货币格式

angularjs

我正在尝试使用http://jquerypriceformat.com/为欧盟货币字段创建输入掩码

到目前为止,在我的指令中,输入已正确应用掩码并正确显示给用户,但是我相信这是有问题的,因为POST值是以奇怪的格式发送的,这与我们在输入字段中看到的完全不同。

我包括priceformat.js

<script src="js/jquery.price_format.1.8.min.js"></script>

<input type="text" currency-input ng-model...>

在角度上:

app.directive('currencyInput', function() {
    return {
      require: '?ngModel',
      link: function($scope, element, attrs, controller) {
        element.priceFormat({
            prefix: '',
            centsSeparator: ',',
            thousandsSeparator: '.'
        });
      }
    };
});

我的输入正确显示了带有掩码的值,但是在POST数据(用角度表示)上,它是一个不同的值,我缺少什么?

输入> 2.200,80 | 帖子> 22,0080

谢谢


阅读 217

收藏
2020-07-04

共1个答案

一尘不染

从您的示例中,我看不到该链接返回任何内容。

我会写类似的指令:

.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) {

          elem.priceFormat({
            prefix: '',
            centsSeparator: ',',
            thousandsSeparator: '.'
        });

                return elem[0].value;
            });
        }
    };
}]);

演示1 [Fiddle](http://jsfiddle.net/SAWsA/741/)

在此处输入图片说明

如果您想启动过滤器,请使用$formatters

现在link是:

link: function (scope, elem, attrs, ctrl) {
            if (!ctrl) return;

            var format = {
                    prefix: '',
                    centsSeparator: ',',
                    thousandsSeparator: ''
                };

            ctrl.$parsers.unshift(function (value) {
                elem.priceFormat(format);

                return elem[0].value;
            });

            ctrl.$formatters.unshift(function (value) {
                elem[0].value = ctrl.$modelValue * 100 ;
                elem.priceFormat(format);
                return elem[0].value;
            })
        }

演示2 [Fiddle](http://jsfiddle.net/SAWsA/1218/)

2020-07-04