J’ai dans un workflow, un premier champ qui est requis en fonction de la valeur d’un deuxième champ.
Mon problème est qu’il est possible de changer la valeur du deuxième champ puis d’envoyer le formulaire avant que le premier champ devienne requis.
Sachant que j’ai le problème dans de nombreux champs et sur plusieurs workflows. Quel est la meilleure façon d’empêcher cela sur Workflowgen sans désactiver le mode Ajax ?
Merci pour le lien, j’ai vérifié mais mon problème est différent.
La vérification sur les champs requis est bien faite avant l’envoi.
Un petit exemple pour m’aider à expliquer :
Commentaires est requis uniquement si Décision = Refus.
Si l’utilisateur sélectionne Décision = Valider, Commentaires n’est donc pas requis.
Ensuite l’utilisateur sélectionne Décision = Refus puis rapidement clique sur envoi, il est possible que le formulaire soit envoyé car Commentaires n’a pas eu le temp de passer en requis.
Je pense que le problème vient du mode Ajax, mais j’aimerais trouver une solution en laissant le mode Ajax activer.
Il faut effectuer une vérification JavaScript lors du clique sur le bouton Envoyer.
Voici un exemple pour déclencher une fonction JavaScript sur le bouton Envoyer:
L’exemple ci-dessus concerne l’ajout d’une popup, mais vous pouvez très bien faire une vérification simple du contenu du champ et si c’est vide alors retourner false
J’avais pensé à cette solution, mais le problème ne concerne pas un champ spécifique ni même un workflow spécifique. Cela reviendrait à réécrire énormément de test qui sont déjà censé être fait.
J’aimerais trouver une solution plus globale, je pensais par exemple au promesse (promise) en javascript, pour permettre d’attendre la fin du code asynchrone, mais je ne sais pas si cela est possible sur Workflowgen.
Je pense que je ne dois pas être le premier à me poser cette question, j’ai été étonner de rien trouver sur le forum. Si j’ai bien compris le problème, tous workflow avec le mode ajax activer est susceptible de ne pas prendre en compte les champs requis. Et même si les erreurs se produise surtout sur des machines avec de mauvaise performance, j’ai réussi à reproduire l’erreur sur ma machine en cliquant simplement très rapidement.
Nous avons reproduit le problème avec et sans Ajax quand il y a un traitement long en arrière plan.
La solution de contournement est celle présentée plus haut.