光标位置根据指令格式化为货币格式

时间:2015-04-15 07:26:52

标签: javascript angularjs angularjs-directive format

大家好,

我在输入元素上使用此货币格式指令,在我输入

时格式化为货币
        (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 个答案:

答案 0 :(得分:0)

如果用户输入的内容会在1-2秒后进行格式化时设置超时,那该怎么办?