Ich habe ein Formular, das, wenn ein Kontrollkästchen falsch ist, die Validierung einer Texteingabe unter Verwendung der Anweisung ng-require erzwingt. Wenn das Kontrollkästchen true ist, wird das Feld ausgeblendet und ng-required auf false gesetzt.
Das Problem ist, dass ich auch einen regulären Ausdruck für die Validierung am Eingang habe, der auch die Winkelanweisung ng-pattern verwendet. Das Problem, auf das ich stoße, ist, dass wenn ein Benutzer eine ungültige Telefonnummer eingibt, das Kontrollkästchen aktiviert, um diese Eingabe zu deaktivieren (und folglich keine weitere Validierung benötigt), das Formular keine Übermittlung zulässt, da es aufgrund des ng-Musters ungültig ist.
Ich habe versucht, dieses Problem zu beheben, indem ich eine ng-change-Funktion hinzugefügt habe, um das Eingabemodell auf null zu setzen. Das ng-Muster und damit das Feld sind jedoch beim ersten Satz des Kontrollkästchens immer noch auf false gesetzt. Wenn ich jedoch das Kontrollkästchen deaktiviere und alles auf das ursprüngliche Laden des Formulars zurücksetze, aktivieren Sie das Kontrollkästchen erneut. Das Formular ist gültig und kann gesendet werden. Ich bin mir nicht sicher, was mir fehlt. Hier ist der ng-change Code, den ich bisher habe:
var phoneNumberRegex = /^\(?(\d{3})\)?[ .-]?(\d{3})[ .-]?(\d{4})$/;
$scope.phoneNumberPattern = phoneNumberRegex;
$scope.removeValidation = function() {
if ($scope.cell._newUser === false) {
$scope.request._number = '';
$scope.phoneNumberPattern = /[0-9a-zA-Z]?/;
} else {
$scope.phoneNumberPattern = phoneNumberRegex;
}
};