Question Formidable

Bonjour,
Spip 4.2.14, Formidable 6.3.2
J’ai un (gros voire très gros) formulaire réalisé avec Formidable, à priori 423 champs. Il a été fait il y a maintenant plusieurs années, il est couplé à un système de paiement et sert aux inscriptions à un concours annuel, je l’ajuste annuellement aux besoins du client.

Pour en faciliter l’usage j’ai ajouté pas mal de javascript pour « collapser » des tas de fieldsets. En gros on a 4 catégories contenant chacune une 15aines de sections. Quand on ouvre une catégorie on peut ensuite dévoiler une par une les sections dont on a besoin. Tout ça marche plutôt très bien, cela pourrait potentiellement être refait/amélioré mais on attend la refonte globale du site pour se replonger dedans, il faudrait typiquement transformer ce formulaire en formulaire à étapes.

Mon souci: certains champs des sections on des validations (par ex. tel champ doit contenir au minimum 300). Si je saisis 250 dans ce champ j’ai bien le formulaire qui refuse cette saisie, entoure le champ concerné en rouge, message d’erreur, bref tout normal. Mon problème vient du fait que d’un seul coup cela annule tous les « collapse » réalisés en javascript et cela affiche maintenant les 400 champs, y compris ceux qui sont totalement vides. Je suppose que cela est dû au fait que le formulaire ne se recharge pas et que l’erreur est ajoutée dans le formulaire via du javascript de Formidable. Je me demandais ou se trouvait ce js dans le plugin et s’il y avait moyen d’intervenir dessus pour refaire une passe sur tous les fieldset pour ne revéler que ceux qui avait été remplis lors de la saisie initiale.
Si quelqu’un a une piste je suis preneur …
Pierre.

Non l’erreur n’est pas ajouté dans le formulaire en JS… c’est ajouté directement dans le html à la reception/renvoi du fomulaire. Tu a donc très certainement un bug dans ton js.

Mais bon c’est vraiment pas clair ton problème. Je comprend pas ce que son tes collapes, a quel moment ils doivent être executés etc.

Mais bon dans formidable on a deja

  • la possibilité d’avoir des fieldsets pliables, je pense que ca correspond à tes collapses
  • la possibilité d’afficher des champs uniquement si d’autres champs ont une certaine valeur.

Donc je dirais commence par simplifier…

Pour tenter de simplifier la question, par exemple si en jquery je fais:

$(document).ready(function() {
	alert('yo');
});

Je mets ça dans un fichier toto.js appelé dans le header. La première fois que je vais dans la page contenant le formulaire j’ai bien l’alerte avec ‹ yo ›.
Je remplis le formulaire avec une erreur volontaire, le formulaire se recharge avec l’erreur comme indiqué dans mon premier post, mais je n’ai plus l’alerte ‹ yo › … est-ce normal ? En théorie si le formulaire est renvoyé avec le HTML des erreurs en plus, toto.js doit bien être exécuté de nouveau et l’alerte de nouveau affichée ?

c’est parce que le formulaire est rechargé en ajax ; il faut donc que tu utilise en plus onAjaxLoad

Ok c’est bien ce que je supposais donc, c’est du javascript … (ajax est du js pour moi) :slight_smile:
Merci !

certes, mais les erreurs ne sont pas ajoutés en JS, c’est tout le formulaire qui est rechargé, et tout le calcul d’erreur se fait coté serveur