angular validate input type =“number”验证问题

时间:2015-09-15 13:00:27

标签: javascript jquery angularjs validation

当用户输入字符时,我遇到了input type number validation的问题。

当用户标签输出时,它就消失了。

经过一番研究后,我找到了几个解决方案,最好的解决方案是link

此处给出的解决方案是使用以下指令

app.directive('toNumber', function () {
    return {
        require: 'ngModel',
        link: function (scope, elem, attrs, ctrl) {
            ctrl.$parsers.push(function (value) {
                return parseFloat(value || '');
            });
        }
    };
});

如果用户尝试输入数字以外的第一个字符,此解决方案可以正常工作。但是,当用户输入lets say 1W时,它不起作用。它允许输入这种模式。

可能我需要修改此指令以阻止blovk 1W, 1.W, 1WWW (any character after valid number)模式进入。

任何帮助?

此外,

请分享是否有更好的解决方案,我正在寻找。 我的问题是:在IE上,当用户在输入类型编号和标签输入字符时,数字就会消失,我无法使用angular $ error显示错误。

1 个答案:

答案 0 :(得分:1)

试试这个指令

userapp.directive('priceValidator', [function() {
    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;
            });
        }
    };
}])