gpt4 book ai didi

javascript - 在 Angularjs 中格式化输入值

转载 作者:IT王子 更新时间:2023-10-29 03:18:51 25 4
gpt4 key购买 nike

我正在尝试编写一个自动格式化 <input> 中的数字的指令但模型未格式化。让它工作很好,加载时输入中的值在 Controller 中显示为 1,000,000 和 1000000,但是仅键入 ngModel.$parsers 时函数触发。唯一一次ngModel.$formatters当指令被加载并且值为 0 时即会触发。

我怎样才能让它在按键上工作(我试过绑定(bind)到按键/按键但它不起作用)。

这是我的代码:

angular.module('myApp.directives', []).directive('filterInput', ['$filter', function($filter) {
return {
restrict: 'A',
require: 'ngModel',
link: function(scope, element, attr, ngModel) {

ngModel.$parsers.push(function fromUser(text) {
return parseInt(text.replace(",", ""));
});

ngModel.$formatters.push(function toUser(text) {
console.log($filter('number')(text));
return ($filter('number')(text || ''));
});

}
};
}]);

最佳答案

这是我们使用 unshift 的工作示例:

angular.module('myApp.directives', []).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(attrs.format)(plainNumber));
return plainNumber;
});
}
};
}]);

HTML 似乎是:

<input type="text" ng-model="test" format="number" />

查看演示 Fiddle

希望对你有帮助

关于javascript - 在 Angularjs 中格式化输入值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19890364/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com