Javascript 在更改时验证输入
我有一个输入框,您必须在其中插入西班牙身份证、护照或其他类型的身份证,点击按钮即可验证 我需要做的是使用相同的规则验证此输入,而不提交(更改时)。我是使用ngChange还是使用ajax HTML:Javascript 在更改时验证输入,javascript,angularjs,Javascript,Angularjs,我有一个输入框,您必须在其中插入西班牙身份证、护照或其他类型的身份证,点击按钮即可验证 我需要做的是使用相同的规则验证此输入,而不提交(更改时)。我是使用ngChange还是使用ajax HTML: <input id="identification" name="identification" type="text" ng-click="trackingLoginCtrl.showErrorCatpcha=false" class="form-control input-md" ng-m
<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;
}
}
ng change允许您在更改输入时计算插入控制器中的表达式 与ng blur的区别在于,当输入失去焦点时,blur调用该函数 当您想要触发控制器中的函数时(当更改值或当失去输入焦点时),由您决定 您只需要在控制器中创建一个函数,当输入发生更改时调用该函数。 像这样:
<input type="text" ng-model="passport" ng-change="evalatePassport()" id="passport />