Как я могу проверить ввод в зависимости от другого ввода angularJS?

0

У меня проблема с проверкой моей формы. Это форма изменения пароля пользователя регистра, профиля профиля и его биографии. В этой форме пароль сначала не требуется, но когда кто-то пишет старый пароль, для формы требуется новый пароль и пароль подтверждения. Я показываю это на примере.

Изображение 174551

Прямо сейчас не требуется, но если я что-то напишу на входе старого пароля, мне нужно, чтобы новый пароль и пароль подтверждения стали красными. У меня есть код:

<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);
    }
}});

Спасибо вам за помощь!!

Теги:
forms

1 ответ

1
Лучший ответ

Для этого вам не нужна другая специальная директива. Вы можете просто использовать 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 не пуст".

  • 0
    Ох, спасибо!!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню