当角度js中的输入类型=“数字”时,只有数字指令不起作用

时间:2017-01-18 13:05:41

标签: javascript jquery angularjs

我搜索了几乎所有的东西,但是不可能得到答案,也许这里有人可以提供帮助。 好的,首先让我介绍一下这个指令的作用,它不允许任何字母输入我的输入 我的OnlyNumeric指令在我的input type = "text"时有效, 但input type = "number"时它不起作用 这是我的指示

app.directive('onlyNumeric', function () {
    return {
        require: 'ngModel',
        link: function (scope, element, attr, ngModelCtrl) {
            function fromUser(text) {
                alert();
                if (text == null) { text = ""; }
                var text = text.toString();
                var transformedInput = text.replace(/[^0-9]+/g, '');
                if (transformedInput.length > 7) {
                    transformedInput = transformedInput.slice(0, -1);
                }
                if (transformedInput !== text) {
                    ngModelCtrl.$setViewValue(transformedInput);
                    ngModelCtrl.$render();
                }

                if (!isNaN(Number(transformedInput))) {
                    //   alert("decimal no");
                    return parseInt(transformedInput);
                }
                else { return transformedInput; }
                //  return transformedInput;
            }
            ngModelCtrl.$setValidity('is_valid', false);
            ngModelCtrl.$parsers.push(fromUser);

        }
    };
});

我的HTML

<input type = "number" only-numeric ng-model ="age">

因此,当我将我的类型更改为“text”时,它可以正常工作

所以我尝试了另一种方法来捕获keydown事件但是,我没有得到如何捕获我的输入值, 在输入有效之前,行ngModelCtrl.$parsers.push(fromUser);不会传递我的输入

1 个答案:

答案 0 :(得分:0)

我认为你没有执行该指令,你应该使用带有名称和破折号的表示法,如下所示:

<input type="number" only-numeric ng-model="age">