AngularJS限制输入数字不起作用

时间:2015-09-07 19:54:34

标签: javascript angularjs angularjs-directive keypress

我的html页面上有一个输入框,可以将数据绑定到ng-model。我使用指令将输入字段限制为仅限数字。我不能使用默认的HTML5限制,如type =“number”。我遇到的问题是,如果输入非数字字符两次,例如按123然后按两次k,则将k添加到123,得到123k。但是,当我按下另一个键时,指令会删除k。

如果你按两次相同的键,有人可以帮我解决这封信出现的问题

我使用的指令:

angular.module('app').
directive('onlyDigits', function () {

return {
    restrict: 'A',
    require: '?ngModel',
    link: function (scope, element, attrs, ngModel) {
        if (!ngModel) return;
        ngModel.$parsers.unshift(function (inputValue) {
            var digits = inputValue.split('').filter(function (s) { return (!isNaN(s) && s != ' '); }).join('');
            ngModel.$viewValue = digits;
            ngModel.$render();
            return digits;
        });
    }
};

});

1 个答案:

答案 0 :(得分:1)

这是我们用来仅在指令中实现数字的原因:

directives.directive('numbersOnly', function () {
    'use strict';
    return {
        require: 'ngModel',
        link: function (scope, element, attrs, modelCtrl) {
            modelCtrl.$parsers.push(function (inputValue) {
                if (inputValue === undefined) {
                    return '';
                }
                var transformedInput = inputValue.replace(/[^0-9]/g, '');
                if (transformedInput !== inputValue) {
                    modelCtrl.$setViewValue(transformedInput);
                    modelCtrl.$render();
                }
                return transformedInput;
            });
        }
    };
});