Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对输入类型编号忽略指令_Javascript_Angularjs_Angularjs Directive - Fatal编程技术网

Javascript 对输入类型编号忽略指令

Javascript 对输入类型编号忽略指令,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,我正在使用AngularJS,我实现的指令之一是防止输入非数字字符,实现如下所示: mainModule.directive('onlyNumbers', function () { return { require: 'ngModel', link: function(scope, element, attrs, modelCtrl) { modelCtrl.$parsers.push(function (inputValue)

我正在使用AngularJS,我实现的指令之一是防止输入非数字字符,实现如下所示:

mainModule.directive('onlyNumbers', function () {
    return {
        require: 'ngModel',
        link: function(scope, element, attrs, modelCtrl) {

            modelCtrl.$parsers.push(function (inputValue) {
                var transformedInput = inputValue.replace(/\D/g,'').replace(/ /g, '');
                if (transformedInput != inputValue) {
                    modelCtrl.$setViewValue(transformedInput);
                    modelCtrl.$render();
                }
                return transformedInput;
            });
        }
    };
});
该指令在文本类型的输入上使用时效果良好,但如果我想在数字类型的输入上使用它,则忽略该指令,并允许输入+,-,。和e字符,它们对输入数字有效,但对我的场景无效,因为我不希望在这些数字类型的输入中输入负数、十进制数和指数数


如何使该指令比输入指令具有更高的优先级?

顺便说一句,该指令可能重复,您的指令不起作用的原因是angular已经有一个内置命令,该命令会使将ngModel值设置为数字以外的值的任何内容无效,例如,您的指令试图将数字视为字符串。您可以通过将指令更改为返回NumbertransformedInput来解决此问题;我不认为问题是指如何验证字段或为什么它接受“e”字符。。。我试着在Chrome的开发工具上调试这个,事实上,当键入“e”字符时,由于某种原因,breack点似乎丢失了。知道它发生的原因可能会很有趣。谢谢,是的,这确实是我问题的主题,我希望我的指令在输入类型为number时起作用,但无论何时引入任何可接受的非数字字符,该指令都不会被称为可能的重复,您的指令不起作用的原因是angular已经有一个内置命令,该命令会使将ngModel值设置为数字以外的值的任何内容无效,例如,您的指令试图将数字视为字符串。您可以通过将指令更改为返回NumbertransformedInput来解决此问题;我不认为问题是指如何验证字段或为什么它接受“e”字符。。。我试着在Chrome的开发工具上调试这个,事实上,当键入“e”字符时,由于某种原因,breack点似乎丢失了。知道它发生的原因可能会很有趣。谢谢,是的,这确实是我问题的主题,我希望我的指令在输入类型为number时起作用,但每当引入任何可接受的非数字字符时,都不会调用该指令