-1

我正在使用 Angular 指令通过正则表达式验证表单。下面给出了代码和 HTML 的最小表示。

问题: 奇怪的行为如下:表单表示输入偶数长度的错误,但输入奇数长度的错误。击键示例:

一个 --> 有效

aa --> 无效

aaa --> 有效

aaaa --> 无效

键入和删除字母时都会发生这种情况。但是,如果我超过 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>
4

1 回答 1

0

去掉正则表达式末尾的“g”

var valid_input_regex = /^[\w]+$/;

那时应该工作

于 2015-10-01T19:48:17.570 回答