大家好,
我在输入元素上使用此货币格式指令,以便在输入时格式化为货币
(function() {
var currencyFormatDir = function($filter) {
return {
require: '?ngModel',
link: function(scope, elem, attrs, ctrl) {
if (!ctrl)
return;
ctrl.$formatters.unshift(function(a) {
var abs = $filter(attrs.currencyFormat)(ctrl.$modelValue);
return $filter(attrs.currencyFormat)(ctrl.$modelValue);
});
ctrl.$parsers.unshift(function(viewValue) {
var plainNumber = viewValue.replace(/[^\d|\-+|\.+]/g, '');
elem.val($filter('number')(plainNumber));
if (plainNumber === 0) {
return "";
}
else {
return plainNumber;
}
});
}
};
};
angular.module('myApp').directive('currencyFormat', ['$filter', currencyFormatDir]);})();
但是如果我想更改阀门,例如:假设我有数字 156 我想将其更改为 12,356 然后我将光标移动到图 1 的右侧并输入 23 但如果我在这里这样做,那么我最终会得到数字 12,563 发生这种情况是因为光标移至末尾。我不知道为什么会发生这种情况,有人可以帮我弄清楚为什么会发生这种情况。
最佳答案
如何设置一个超时,每次用户键入时都会重置该超时,以便在 1-2 秒后进行格式化?
关于javascript - 通过指令格式化为货币格式时光标位置发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29644059/