Угловой вход JS Validate On Change - PullRequest
1 голос
/ 21 марта 2019

У меня есть поле ввода, где вы должны вставить испанский идентификатор, паспорт или другой тип удостоверения личности, который подтверждается нажатием кнопки.

Что мне нужно сделать, так это подтвердить ввод с теми же правилами без отправки (при изменении). Использую ли я для этого ngChange или ajax ?

HTML:

<input id="identification" name="identification" type="text" ng-click="trackingLoginCtrl.showErrorCatpcha=false" class="form-control input-md" ng-model="trackingLoginCtrl.owcsDocument" required="">

<button id="submit" name="submit" ng-click="trackingLoginCtrl.validateF()"></button>

Функция контроллера:

validateF() {
            let vm = this;
            vm.showError = false;
            vm.showErrorCatpcha = false;
            if (vm.owcsDocument != null) {

                //Reglas de validacion
                let validChars = 'TRWAGMYFPDXBNJZSQVHLCKET';
                let nifRexp = /^[0-9]{8}[TRWAGMYFPDXBNJZSQVHLCKET]{1}$/i;
                let nieRexp = /^[XYZ]{1}[0-9]{7}[TRWAGMYFPDXBNJZSQVHLCKET]{1}$/i;
                let passRexp = /^[a-z]{3}[0-9]{6}[a-z]?$/i;
                let str = vm.owcsDocument.toString().toUpperCase();

                //Si no cumple ninguna de las estruturas error
                if (!nifRexp.test(str) && !nieRexp.test(str) && !passRexp.test(str)) {
                    vm.showError = true;
                    return false;
                }

                //Si es pasaporte pasamos la información directamente
                if (passRexp.test(str)) {
                    vm.aux(str);
                    return true;
                } else {
                    //Si es DNI/NIE validamos que la/s letra/s sean validas con la numeracion.
                    let nie = str
                        .replace(/^[X]/, '0')
                        .replace(/^[Y]/, '1')
                        .replace(/^[Z]/, '2');

                    let letter = str.substr(-1);
                    let charIndex = parseInt(nie.substr(0, 8)) % 23;

                    if (validChars.charAt(charIndex) === letter) {
                        vm.aux(str);
                        return true;
                    }
                    vm.showError = true;
                    return false;
                }
            } else {
                vm.showError = true;
                return false;
            }
        }

Ответы [ 2 ]

1 голос
/ 21 марта 2019

ng-change позволяет вам оценить выражение, которое вы вставляете в свой контроллер при изменении входа.

Разница с ng-blur заключается в том, что blur вызывает функцию, когда вход теряет фокус.

Вам решать, когда вы хотите запустить функцию в вашем контроллере (когда измените значение или когда потеряете фокус ввода).

Единственное, что вам нужно, это создать функцию в вашем контроллере, которая вызывается при изменении входа.Примерно так:

<input type="text" ng-model="passport" ng-change="evalatePassport()" id="passport />

и в вашем контроллере реализована логика функции «AssessPassport»

0 голосов
/ 21 марта 2019

Вы можете использовать ngBlur угловой ввод JS без подтверждения

https://docs.angularjs.org/api/ng/directive/ngBlur

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...