0
votes

JS forme validation. Vérifiez si le (s) champ (s) existe (s) si cela exécute une (s) fonction (s) s'il renvoie vrai que de soumettre le formulaire

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: validate de données-validate-e-mail Si tel est le cas, il doit être validé avec la fonction correspondante par exemple e-mailisvalid () .

Les fonctions renvoient tous un booléen avec true ou false . 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. xxx


3 commentaires

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 de sorte que cela ne vérifie pas le postfix


Même si vous fournissez un modèle de regex pour vérifier?


3 Réponses :


0
votes

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...
}


0 commentaires

0
votes

Vous pouvez avoir une variable globale finalstatus en combinaison avec l'opérateur logique && xxx

vous pouvez même raccourcir le processus en vérifiant Statut de finalStatus dans votre si pour éviter d'entrer si l'état est déjà false xxx


5 commentaires

@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 && ..... 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 à l'intérieur de votre si comme expliqué dans la dernière partie de ma réponse. Il suffit de le supprimer de votre si 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); Si cela renvoie false, il n'exécutera jamais la fonction car dans le prochain && code> isvalid 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



0
votes

Vous pouvez utiliser array et filtre pour résoudre ceci. xxx


0 commentaires