Angularjs 为什么赢了';这不是ng模式过滤器的编号吗?

Angularjs 为什么赢了';这不是ng模式过滤器的编号吗?,angularjs,regex,Angularjs,Regex,我有一个AngularJS单页应用程序。一个视图有一个文本框,我只想接受整数字段的数字。我在控制器中输入了此代码,在视图中输入了此文本框,但当我运行视图时,它接受任何键盘字符。你能告诉我我需要如何修改它才能工作吗 $scope.FilterNumbersOnly=/^\d+$/; 当输入到基于文本的字段中的值未通过指定的正则表达式测试时,ng模式将在错误对象上设置模式键 这与禁止用户输入文本无关。如果您想添加该行为,您需要监听error对象上的模式键,并将处理程序附加到该对象。当输入无效时,错

我有一个AngularJS单页应用程序。一个视图有一个文本框,我只想接受整数字段的数字。我在控制器中输入了此代码,在视图中输入了此文本框,但当我运行视图时,它接受任何键盘字符。你能告诉我我需要如何修改它才能工作吗

$scope.FilterNumbersOnly=/^\d+$/;
当输入到基于文本的字段中的值未通过指定的正则表达式测试时,
ng模式
将在
错误
对象上设置
模式

这与禁止用户输入文本无关。如果您想添加该行为,您需要监听
error
对象上的
模式
键,并将处理程序附加到该对象。当输入无效时,错误对象将反映这一点,您应该通过阻止用户输入来响应。或者你可以采取任何你认为必要的行动

为了防止用户输入,当设置
错误
对象上的
模式
键时,可以在输入字段上设置
禁用
属性

实现这一点的一个简单方法是使用
ng if
指令

<input disabled ng-if="!form.input.$valid" />
<input ng-if="form.input.$valid" />


下面是一个问题。

为什么不使用内置的HTML支持

<input type="number">

受支持-

您可以使用:

  • 指令
  • 模块(我总是需要使用掩码来处理输入)
  • 我制作了这个片段,展示了两种方式:

    (函数(){
    “严格使用”;
    角度模块('app',['ngMask']))
    .controller('mainCtrl',函数($scope){
    $scope.checkNumber=函数(){
    $scope.input=$scope.input.replace(/\D+/,“”);
    }
    })
    })();
    
    
    不带掩码的输入:
    
    带掩码的输入:
    我尝试将输入文本框更改为此,但它仍然允许在文本框中输入非数字键。唯一允许的字母值是“e”,表示科学记数法。ex-。如果这不符合您的需要,您可以编写一个指令来侦听输入,然后根据特定模式禁止某些字符。这可以在任何提交/模糊验证之前运行。谢谢。我可以试试。看起来,在javascript中处理按键或keyup事件可能更简单。