javascript - 如何根据另一个输入 angularJS 验证输入?

标签 javascript html angularjs forms

我在验证表单时遇到问题。这是一种更改注册用户的密码、个人资料图片和个人简介的表格。在该表单中,首先不需要密码,但是当有人写下旧密码时,该表单需要新密码和确认密码。我通过一个例子来展示它。

enter image description here

现在不是必需的,但是如果我在旧密码的输入中写入一些内容,我需要新密码和确认密码变成红色。我的代码是:

<div class="form-group">
            <label for="oldpassword" class="cols-sm-2 control-label">Old Password</label>
            <div class="cols-sm-10">
                <div class="input-group">
                    <span class="input-group-addon"><i class="fa fa-lock fa-lg" aria-hidden="true"></i></span>
                    <input type="password" class="form-control" name="oldpassword" id="oldpassword"
                           placeholder="Enter your actual password" ng-model="oldPassword"/>
                </div>
            </div>
        </div>



        <div class="form-group">
            <label for="password" class="cols-sm-2 control-label">New Password</label>
            <div class="cols-sm-10">
                <div class="input-group">
                    <span class="input-group-addon"><i class="fa fa-lock fa-lg" aria-hidden="true"></i></span>
                    <input type="password" class="form-control" name="password" id="password"
                           placeholder="Enter your new password"
                           ng-model="newPassword" pattern="^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,}" require-pass/>
                </div>
            </div>
        </div>

        <div class="form-group">
            <label for="confirm" class="cols-sm-2 control-label">Confirm Password</label>
            <div class="cols-sm-10">
                <div class="input-group">
                    <span class="input-group-addon"><i class="fa fa-lock fa-lg" aria-hidden="true"></i></span>
                    <input type="password" class="form-control" name="confirm" id="confirm"
                           placeholder="Confirm your new password" ng-model="confirm" require-pass confirm-directive
                           />
                </div>
            </div>
        </div>

require-pass 指令仅在用户在新密码或确认密码的输入中写入内容时才有效。确认指令是检查两个密码是否相等的指令(该指令有效)。 require-pass 指令是:

app.directive('requirePass', function () {
return {
    require: 'ngModel',
    link: function (scope, element, attr, mCtrl) {
        function myValidation(value) {
            var oldPass = $('#oldpassword').val();
            console.log(oldPass);
            if (oldPass!="") {
                mCtrl.$setValidity('charE', false);
            } else {
                mCtrl.$setValidity('charE', true);
            }
            return value;
        }

        mCtrl.$parsers.push(myValidation);
    }
}});

感谢您的帮助!!

最佳答案

您不需要为此使用另一个自定义指令。您可以只使用ng-required。文档在这里:https://docs.angularjs.org/api/ng/directive/ngRequired

<input id="newPass" ng-required="oldPass" type="text" ng-model=... />
<input id="newPassConfirm" ng-required="oldPass" type="text" ng-model=... />

ng-required="oldPass" 基本上是说“如果 oldPass 不为空,我需要填写此字段。”

关于javascript - 如何根据另一个输入 angularJS 验证输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37547284/

相关文章:

javascript - Watchify 并不总能检测到 javascript 文件的变化

java - 在 Chartkick 中更改时间线

javascript - Bootstrap 3 (CSS) 的几个小问题

javascript - 如何使用 Intel XDK 切换页面

html - 在哪里学习 IE6 css 问题

javascript - 使用 vb.net 在代码中调用 jquery 函数

html - 将 img 和 ul 列表对齐,使其彼此相邻

javascript - 无法将图像文件从 ng-file-upload 上传到 Web api

angularjs - 将 Node 模块文件注入(inject)index.html

javascript - 在angularjs中显示数组的自定义服务