我正在尝试使用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
谢谢
从您的示例中,我看不到该链接返回任何内容。
我会写类似的指令:
.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/)
[Fiddle](http://jsfiddle.net/SAWsA/741/)
如果您想启动过滤器,请使用$formatters:
$formatters
现在link是:
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/)
[Fiddle](http://jsfiddle.net/SAWsA/1218/)