无法仅设置数字输入

时间:2015-05-05 17:34:29

标签: javascript angularjs html5

我正在尝试设置一个只接受数字的输入,但仍然可以输入字母,为什么?

               <input type="number"
                      pattern="[0-9]"
                      ng-model="slip.risk"
                      class="form-control"
                      placeholder="Risk"
                      ng-change="riskWinCalculations(slip, 'RISK')">

这是针对Angularjs应用程序的,所以我不知道这是问题还是什么。

1 个答案:

答案 0 :(得分:2)

模式不会阻止字符被输入到输入元素中,它只会启动验证。

为防止输入非数字字符,您可以使用截取所输入值的指令。

angular.module('components', []).directive('numbersOnly', function () {
    return {
        restrict: 'A',
        require: 'ngModel',
        link: function (scope, element, attrs, ngModelCtrl) {
            ngModelCtrl.$parsers.push(function (inputValue) {
                var transformedInput = inputValue.replace(/\.\.+/g, '.');
                ngModelCtrl.$setViewValue(transformedInput);
                ngModelCtrl.$render();

                return inputValue;
            });
        }
    }
});

Here's a JsFiddle of the working directive