Ich stehe vor einem Problem, das ich nicht lösen kann. Ich habe ein Feld, das ich über eine Direktive validiere, die den Eingabewert mit einer Regex übereinstimmt.AngularJS revalidate beim Einreichen über die Direktive
Mein Eingang:
<input type="text"
name="emailaddress"
class="form-control"
ng-model="fields.emailaddress.value"
ng-maxlength="fields.emailaddress.validation.maxLength"
validator-emailaddress
required />
Meine Richtlinie:
angular.module('forms')
.directive('validatorEmailaddress', validatorEmailaddress);
/* @ngInject */
function validatorEmailaddress() {
var directive = {
require: 'ngModel',
link: link
};
return directive;
function link(scope, element, attrs, modelCtrl) {
var valid = false;
var formatter = function (inputValue) {
if (inputValue) {
var res = inputValue.match(/^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/);
if (res && res.length > 0) {
valid = true;
}
modelCtrl.$setValidity('pattern', valid);
valid = false;
}
return inputValue;
};
modelCtrl.$parsers.push(formatter);
if (scope[attrs.ngModel] && scope[attrs.ngModel] !== '') {
formatter(scope[attrs.ngModel]);
}
}
}
Jetzt ist meine Frage dieser:
Wenn ich in der Eingabe füllen, alles ist in Ordnung, aber wenn ich fülle die Eingabe mit einem ungültigen Wert und öffne dann das Modal erneut. In diesem Fall ist das ungültige Muster nicht mehr vorhanden, so dass der Benutzer mit einem ungültigen Eingabewert fortfahren kann.
Wie kann ich veranlassen, dass meine Anweisung den Eingabewert auch beim Senden überprüft?
Vielen Dank im Voraus.
Sie haben einen Parser definiert, keinen Validator, siehe Benutzerdefinierte Validierung (https://docs.angularjs.org/guide/forms) – fantarama
Wie senden Sie das Formular .. direkt über HTML? Sie können ng-click() verwenden, um eine Funktion aufzurufen, um Ihre E-Mail zu validieren und dann das Formular über angular $ http zu senden. – maleeb
Ich weiß es nicht, was du fragst, aber es gibt ein NG-Muster-Attribut, das du einem Eingabefeld hinzufügen kannst, es braucht Regex und wenn die Eingabe falsch ist, wird es form.input. $ Error.pattern geben es für die benutzerdefinierte Validierung. Siehe https://docs.angularjs.org/api/ng/directive/ngPattern –