J'ai une fonction qui a réussi l'élément de formdien. Il vérifie si le champ existe via un attribut de données. Par exemple: Les fonctions renvoient tous un booléen fort> avec validate de données-validate-e-mail code> Si tel est le cas, il doit être validé avec la fonction correspondante par exemple
e-mailisvalid () code>.
true code> ou
false code>. Comment puis-je gérer / suivre si l'une des fonctions renvoie false afin que je puisse empêcher le formulaire de soumettre. Une variable globale ne fonctionne pas car elle est écrasée par la fonction suivante. p>
3 Réponses :
Avec votre solution actuelle, quelque chose comme ça fonctionnerait:
p>
onSubmit(form, event) { event.preventDefault(); const fields = form.querySelectorAll( `[${textValidation}]`); const passwordField = form.querySelector(`[${passwordValidation}]`); const repeatPasswordField = form.querySelector(`[${passwordRepeatValidation}]`); const email = form.querySelector(`[${emailValidation}]`); const isValid = true; if(fields && !this.TextIsValid(fields)) { isValid = false; } if(email && !this.emailIsValid(email);) { isValid = false; } // And so on... }
Vous pouvez avoir une variable globale vous pouvez même raccourcir le processus en vérifiant Statut de finalstatus code> en combinaison avec l'opérateur logique
&& code>
finalStatus code> dans votre
si code> pour éviter d'entrer si l'état est déjà
false code> p>
@Marc, pourriez-vous s'il vous plaît décrire pourquoi cela ne fonctionne pas?
Je me trompe avec dire que cela ne fonctionne pas mais avec ce concept. Si l'une des fonctions de validation renvoie false. Il ne vérifiera plus les autres champs, en raison de isvalid && ..... code> Cela signifie qu'il ne lancera pas un message d'erreur à l'utilisateur. Vous souhaitez que l'utilisateur notifie avec l'utilisateur avec des avertissements / erreurs pour chaque champ
@MARC Il ne vérifiera pas les autres champs si vous mettez isvalid code> à l'intérieur de votre
si code> comme expliqué dans la dernière partie de ma réponse. Il suffit de le supprimer de votre
si code> tel qu'il est dans la première partie de la réponse
Le problème n'est pas à l'intérieur du si. isvalid = isvalid && this.textisvalid (champs); code> Si cela renvoie false, il n'exécutera jamais la fonction car dans le prochain && code> isvalid code> est faux. Si vous supprimez ISVALID, la fonction écrasera la valeur. Donc, si 4 sont faux et que le dernier est vrai. Il dit qu'il est valide mais ce n'est pas le cas.
@Marc, faites-le ensuite à l'inverse: this.textisvalid (champs) && isvalid code>
Vous pouvez utiliser array code> et
filtre code> pour résoudre ceci.
Avez-vous examiné la validation de formulaire HTML5? Beaucoup de ces choses sont maintenant intégrées, fournissant à vos règles de validation peuvent être exprimées avec celles-ci. développeur.mozilla.org/en-us/docs/learn/Forms/ Form_validation
J'utilise une partie de la validation HTML5 mais avec un courrier électronique, par exemple, il suffit de vérifier si vous faites
foo @ bar code> de sorte que cela ne vérifie pas le postfix
Même si vous fournissez un modèle de regex pour vérifier?