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