Angular 表单验证中的奇怪行为
Strange behavior in Angular form validation
我正在使用 Angular 指令通过正则表达式验证表单。下面给出了代码和 HTML 的最小表示。
问题:
奇怪的行为如下:表单用偶数长度的输入发出错误信号,但奇数长度的输入则没有。击键示例:
a --> valid
aa --> invalid
aaa --> valid
aaaa --> invalid
这在输入和删除字母时都会发生。
但是,如果我通过 aaaa 或任何长度相等的字符串,它不会显示任何错误。
我怀疑这可能是由于 Angular 摘要循环造成的,但我无法找出问题所在。
关于我可能想要查看的内容的任何线索?
代码
这是我的指令:
var valid_input_regex = /^[\w]+$/g;
directives.directive('pn', function() {
return {
require: 'ngModel',
link: function(scope, elm, attrs, ctrl) {
ctrl.$validators.pn = function(modelValue, viewValue) {
if (!valid_input_regex.test(modelValue)) {
return false;
}
return true;
};
}
};
});
并且在 HTML
<input type="text" class="form-control" name="name" ng-model="name" pn>
<span ng-show="(form.name.$error.pn && !form.name.$pristine)">Please use plain text or numbers.</span>
去掉正则表达式末尾的 'g'
var valid_input_regex = /^[\w]+$/;
应该可以了
我正在使用 Angular 指令通过正则表达式验证表单。下面给出了代码和 HTML 的最小表示。
问题: 奇怪的行为如下:表单用偶数长度的输入发出错误信号,但奇数长度的输入则没有。击键示例:
a --> valid
aa --> invalid
aaa --> valid
aaaa --> invalid
这在输入和删除字母时都会发生。 但是,如果我通过 aaaa 或任何长度相等的字符串,它不会显示任何错误。 我怀疑这可能是由于 Angular 摘要循环造成的,但我无法找出问题所在。
关于我可能想要查看的内容的任何线索?
代码
这是我的指令:
var valid_input_regex = /^[\w]+$/g;
directives.directive('pn', function() {
return {
require: 'ngModel',
link: function(scope, elm, attrs, ctrl) {
ctrl.$validators.pn = function(modelValue, viewValue) {
if (!valid_input_regex.test(modelValue)) {
return false;
}
return true;
};
}
};
});
并且在 HTML
<input type="text" class="form-control" name="name" ng-model="name" pn>
<span ng-show="(form.name.$error.pn && !form.name.$pristine)">Please use plain text or numbers.</span>
去掉正则表达式末尾的 'g'
var valid_input_regex = /^[\w]+$/;
应该可以了