iguypouf
Messages postés45Date d'inscriptionmercredi 27 octobre 2004StatutMembreDernière intervention26 août 2009
-
21 janv. 2008 à 15:41
iguypouf
Messages postés45Date d'inscriptionmercredi 27 octobre 2004StatutMembreDernière intervention26 août 2009
-
21 janv. 2008 à 16:44
Bonjour à vous, professionnels :D
L'absence de mots-clés vraiment liés à mon problème fait que mes recherches sont vaines.
Sur un de mes sites, je construis le formulaire en fonction d'une liste venant d'une DB. Le code lit la DB et crée les input; cependant, certains input sont liés, comme par exemple :
- un input se "disable" si on choisit une certaine valeur dans un autre input
- un input n'est affiché que si on choisit "oui" dans le radio button du haut
Le javascript lié à ces événements est également dans la DB, et cela fonctionne.
Gros problème : si l'utilisateur valide le formulaire, puis fait un "back", il revient sur la page, tous les inputs ont gardé leur valeur, mais aucun controle js n'est fait. Et donc dans mes exemples :
- l'input n'est pas "disabled" alors que l'autre input contient la bonne valeur
- le radio sélectionné est "oui", mais l'input relié n'est pas visible.
Etant donné que les fonctions JS à effectuer viennent de la DB, je ne peux pas mettre un "onload" dans le body, puisque je n'ai pas encore les champs.
Comment relancer, à la fin de l'affichage de la page, ces fonctions d'événements ???
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 21 janv. 2008 à 15:48
>>Etant donné que les fonctions JS à effectuer viennent de la DB,
tu as stocké des fonctions javascript dans une base de données ?
>>je ne
peux pas mettre un "onload" dans le body, puisque je n'ai pas encore
les champs.
ben... onload, c'est quand la page est affichée, entièrement, les champs existent donc.
iguypouf
Messages postés45Date d'inscriptionmercredi 27 octobre 2004StatutMembreDernière intervention26 août 2009 21 janv. 2008 à 15:55
Les fonctions JS sont dans la DB, car la gestion des questions du formulaire est dynamique. Donc si dans le module d'administration la personne fait "n'afficher cet input que si l'input A est supérieur à 0", par exemple, cela se traduit en DB par le champ "TestJS" qui vaut "hidshow('input1','input2',890)".
Ma fonction hidshow est elle, passée dans le head car elle sait comprendre ce passage de paramètres. Par contre, je ne sais pas à l'avance combien de fois et quels champs y font appel.
le onload est bien une fois que la page est chargée. Mais lorsque dans mon code ASP s'écrit le "", je n'ai pas encore lu la DB, donc je ne connais pas encore les occurences de hidshow à appeler.
Merci pour ta réponse !
PS : par contre j'ai des milliers d'erreur sur ce site-ci : des '(' manquants et des 'sys' indéfinis
iguypouf
Messages postés45Date d'inscriptionmercredi 27 octobre 2004StatutMembreDernière intervention26 août 2009 21 janv. 2008 à 16:13
En fait, j'ai trouvé, tu m'as un peu mis sur la voie.
Je lis ma DB, et chaque fois que je trouve un appel de fonction JS à affecter, je
- l'affecte à mon input (comme avant)
- l'ajoute à une liste d'appels de fonctions (variable string ASP, donc, qui ressemble donc à "<script langage=javascript>function RetestJS(){" + mes appels de fonctions avec ; au bout + "}".
Ensuite j'écris cette chaine dans l'html.
Et dans le body je fais un onload="RetestJS();', qui va donc chercher la fonction JS se trouvant après mon code html.
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 21 janv. 2008 à 16:37
ne sachant pas ce que fait hidshow... ?
si hidshow est appelée pour tous les champs,
une boucle sur ces champs en fin de page, peut-être?...
<hr /> Cordialement Bul «mon Site» «M'écrire»
iguypouf
Messages postés45Date d'inscriptionmercredi 27 octobre 2004StatutMembreDernière intervention26 août 2009 21 janv. 2008 à 16:44
Arff non, justement, le hidshow passe en paramètres un numéro que la fonction hidshow sait comprendre. Mais cet appel est géré dynamiquement quand on est admin : on peut l'affecter à certains champs, d'autres non.