Empêcher l'envoi avant la prise en compte des champs requis

Bonjour,

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 ?

Bonjour Kevin,

Avez-vous testé ce qui est indiqué sur ce post: My webform is submitted even if I have not provided input for required fields

Bonjour,

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 :

exemple

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.

Bonjour Kevin,

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.

Bonjour Kevin,

Vous pouvez forcer des contrôles spécifiques à faire des postbacks lorsque Ajax est activé:

Cela devrait empêcher la soumission du formulaire lorsque vous faites une action sur le contrôle et le postback est en cours.

Bonjour Eddy,

Je viens de tester votre solution, malheureusement j’arrive à poster le formulaire avant que le postback se déclenche.

Comme aujourd’hui le workflow était très lent, j’ais a nouveau fait des tests en désactivant le mode ajax, et j’ai réussi à reproduire le problème.

Il est donc dans tous les cas, possible de soumettre le formulaire avant la prise en compte des champs requis.

Bonjour Kevin,

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.

Bonjour Quentin,

Effectivement je ne vois pas d’autre solution que la vérification JavaScript lors du clique sur le bouton Envoyer.

Merci de votre aide a tous les deux.