Angularjs验证另一个字段

时间:2015-08-31 18:06:09

标签: angularjs validation

我已经构建了一个angularjs模块,它提供了几个表单验证,而不是开箱即用的表单验证。在这些验证中有一个名为equalTo,它将要验证的字段的ngModel值作为参数。验证旨在验证$viewValue的{​​{1}}以及作为参数传递的ngModel controller的{​​{1}}是否严格相等。这将用于密码和确认密码字段作为示例。这一切都有效,除了我需要能够在两个keydown上验证这两个字段。

正如我所说的,所有这些逻辑都有效,除了当我在另一个字段的控制器上调用$viewValue时,它总是返回undefined并且似乎没有像我期望的那样验证。代码如下,但有很多,所以我已经包含了我的问题。您会注意到,当您输入任何密码时,最初会出现错误,因为确认密码不匹配。当您输入确认密码时没有错误,但初始密码字段仍然存在错误,除非您进入并重新键入。

http://plnkr.co/edit/dIEIuUFMgglOt9uwIDNt?p=preview

以下是代码

ngModel controller

验证指令如下所示

$validate()

验证器服务看起来像这样

<input type="password" ng-model="password" equal-to="confirmPassword">
<input type="password" ng-model="confirmPassword" equal-to="password">

元素收集器服务看起来像这样

function equalTo(Validator) {
        return {
            restrict: 'A',
            require: 'ngModel',
            scope: true,
            link: function (scope, elem, attr, ctrl) {
                var validator = new Validator(elem,attr,ctrl);
                validator.validate('equalTo');
        }
    }
}

1 个答案:

答案 0 :(得分:0)

我觉得很傻。问题不在于此代码中,我添加$validate()方法后,我的解决方案实际上就像在插件中一样。我在我的代码中遇到的问题与一个完全不同的错误有关,该错误导致之后的任何javascript停止运行。解决了这一切,如果我浪费你的时间,我很抱歉。希望这里的代码可以帮助某些人尝试做类似的事情。