J'ai un formulaire qui, si une case à cocher est fausse, applique la validation sur une entrée de texte à l'aide de la directive ng-required. Si la case à cocher est true, le champ est masqué et le ng-required est défini sur false.
Le problème est que j'ai également une expression régulière pour la validation spécifiée sur l'entrée, utilisant également la directive angulaire ng-pattern. Le problème que je rencontre est que si un utilisateur remplit un numéro de téléphone invalide, coche la case pour désactiver cette entrée (et n'a donc pas besoin de validation supplémentaire), le formulaire ne permettra pas la soumission car il est invalide en fonction du modèle ng.
J'ai tenté de résoudre ce problème en ajoutant une fonction ng-change pour définir le modèle d'entrée sur null, mais le ng-pattern et donc le champ sont toujours définis sur invalide sur l'ensemble initial de la case à cocher sur false. Si je décoche cependant la case, remettant tout au chargement initial du formulaire, puis cochez à nouveau la case, le formulaire est valide et peut être soumis. Je ne suis pas sûr de ce qui me manque. Voici le code ng-change que j'ai jusqu'à présent:
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;
}
};