France Hardware : Forums de discussion
Retrouvez les prix près de chez vous :  
Index du forum | Liste des membres | Liste des groupes | Inscription | F-A-Q | Recherche
Pseudo :    Password :     
22 342 membres enregistrés - 1 872 895 posts - 95 150 topics
Index des forums FH  | Index des forums DegroupNews
      Programmation
           [JS] petite question sur gestion de controle de formulaire complexe
15 connectés(record : 207 le 05 juin 2007 - 05 h 23)

Vous devez vous connecter pour répondre au topic.
[JS] petite question sur gestion de controle de formulaire complexe

grabber
Coordinateur
MacBook Pro 2,4 Powered

Messages : 8 510
Inscrit le 06/03/02
Ville : Angers
Non connecté
  Posté le 27 février 2007 - 11 h 46 m 18 s
hello,

bon je m'en suis sorti par une pirouette, mais si quelqu'un avait une explication ca m'interesse...

alors voici la situation : je fais une gestion de contrats d'assurance, plus precisement la saisie d'un contrat avec plusieurs ecrans :
- selection du client
- selection du type de contrat
- saisie du contrat
- enregistrement et visu

pour ce faire, il faut savoir que j'ai entre 15 et 20 types de contrats differents. chaque contrat a la meme structure, c'est a dire une partie de squelette que j'appelle "generale" commune a tous les contrats, puis une autre partie "specifique" a chaque contrat.
donc en clair, ma page php inclue dabord la partie generale du squelette, puis suivant le type de contrat choisi, j'inclue la seconde partie specifique.
la ou j'ai mon souci c'est pour la validation et la serialisation du formulaire genere complet. forcement puisque la structure change, il faut changer la fonction de validation pour coller au squelette specifique. j'ai donc mis un switch sur le type contrat pour rebalancer la focntion correspondante lors de la validation du formulaire.
tout ca fonctionne au poil :)

bon alors ou est le probleme...

la validation :
en effet, j'ai 2 fonctions de valid, celle qui est appelee directement au submit est une fonction de verif qui va declencher une autre fonction qui va cecker si toute la partie "general" est ok, puis celle ci doit renvoyer le resultat a la fonction initialement appelee qui s'il n'y a pas d'erreur continue par le "specifique". dans le cas contraire : return false... logique...

donc voila ce que j'avais fait dasn la fct appelee par le form (je met que le debut...) :
    Code     
 1. function Valid_PnoCno(form) {
 2. 	
 3. 	// si la verif du squel general passe, on verif pno cno et on shrink
 4. 	
 5. 	if (!Valid_SquelGen(form)) {
 6. 		
 7. 		return false;
 8. 		
 9. 	}	else {
10. 		
11. 		


voila voila !!! comme vous l'aurez compris, lorsquelle est appelee, elle va declencher dab la verif du general, si ca passe pas ca s'arrete et sinon ca continue par la verif des autres champs specifiques au type contrat.

mais le blem dans tout ca c'est que la fonction de verif du general, meme si tout est ok et que ca passe, me rnvoit tjrs false !!!! j'ai tout piste, valeur par valeur, et pas moyen.

donc la soluce que j'ai trouve dans l'autre fonction est de declarer une variable "boulettes" et de la mettre a 0 au debut, puis sur chaque test, s'il y a un return false, je l'incremente. a la fin de la verif du general, j'alert ma valeur de boulettes et si elle est a 0 alors je fais une return true, sinon return false.

du coup la forcement ca marche.... mais bon ..... bricolage quand tu nous tiens....
jvoudrais comprendre pkoi ca chie, car dans mon general il n'y a aucun return true ca daccord, c juste de la verif genre : si machin est vide alors alert + return false et ca sur 20 champs. donc forcement a la fin de la fonction, je vais pas mettre un return true sinon meme en cas de merde ca renverra true, c pas le but...

ou alors c moi qui me plante et je devrais mettre un retrun true en derniere ligne pour que si pas de return false avant, le return true passe...

euh... me suis je fait comprendre ????

si vous avez une explication c cool :)



:firefox:

grabber
Coordinateur
MacBook Pro 2,4 Powered

Messages : 8 510
Inscrit le 06/03/02
Ville : Angers
Non connecté
  Posté le 27 février 2007 - 11 h 48 m 43 s
bon ok, jviens de tester la soluce du return true et c bien moi la buse c bien ca qu'il faut faire... bizarre quand meme car quand je n'utilise qu'une seule focntion je n'ai pas besoin de mettre retrun true a la fin, c'est implicite et ca passe...

donc la question reste entiere...



:firefox:

EM.Bzzz


Messages : 60
Inscrit le 04/01/07
Non connecté
  Posté le 16 mars 2007 - 09 h 58 m 24 s
Salut,
un peu tard : pas vu le topic.
Tu dois appeler ta fonction dans le onsubmit du <form> (en tous cas il faudrait). C'est le onsubmit qui attend true ou false pour envoyer ou pas.
La fonction appelée DOIT donc renvoyer true ou false.
Si c'est pas le cas (false explicite uniquement), c'est comme s'il y avait pas onsubmit dans le tag => envoi.
Dans ton exemple, un return !boulette; aurait simplifié ;)

Inconvénient : un fonctionnement implicite risque de dépendre du nav' ...


Message édité 1 fois, la dernière par EM.Bzzz le 16 mars 2007 - 09 h 59.


grabber
Coordinateur
MacBook Pro 2,4 Powered

Messages : 8 510
Inscrit le 06/03/02
Ville : Angers
Non connecté
  Posté le 16 mars 2007 - 11 h 13 m 49 s


Le 16 mars 2007 - 09 h 58, EM.Bzzz a écrit :
Salut,
un peu tard : pas vu le topic.
Tu dois appeler ta fonction dans le onsubmit du <form> (en tous cas il faudrait). C'est le onsubmit qui attend true ou false pour envoyer ou pas.
La fonction appelée DOIT donc renvoyer true ou false.
Si c'est pas le cas (false explicite uniquement), c'est comme s'il y avait pas onsubmit dans le tag => envoi.
Dans ton exemple, un return !boulette; aurait simplifié ;)

Inconvénient : un fonctionnement implicite risque de dépendre du nav' ...


hello,

la fonction est bein evidemment appelee dans le onsubmit sinon je vois pas d'ou on peut l'appeler ;)

c'est justement ce cote implicite qui me gene, tu penses que c'est un comportement different suivant le navigateur ?



:firefox:

EM.Bzzz


Messages : 60
Inscrit le 04/01/07
Non connecté
  Posté le 16 mars 2007 - 14 h 09 m 53 s
C'est en fait un "risque" uniquement théorique dans le sens où tu l'as fait :)
Puisque l'absence de return true est équivalent à l'absence du test (du onsubmit).

En fait, c'est plus pour dire qu'il faut avoir le fonctionnement à l'esprit. Par exemple pour ne pas miser sur le fonctionnement par défaut avec la logique inverse : un return true explicite et pas de return au lieu d'un return false ne fonctionne pas (le form est toujours envoyé)

Je répondais plutôt sur le côté "explication" ...

Quant à l'idée de vouloir faire autrement, on voit de tout ;)
Le cas le plus classique étant d'appeler la fonction de test sur le onclick du bouton submit.
Ce qui, évidemment, ne sert à rien ...




grabber
Coordinateur
MacBook Pro 2,4 Powered

Messages : 8 510
Inscrit le 06/03/02
Ville : Angers
Non connecté
  Posté le 16 mars 2007 - 14 h 49 m 04 s
oui tu as raison, j'avais effectivement joue sur le comprotement par defaut ce qui bien evidemment n'est pas une chose a faire. bah fo bien en faire deux trois de temps en temps lol :dd:



:firefox:

grabber
Coordinateur
MacBook Pro 2,4 Powered

Messages : 8 510
Inscrit le 06/03/02
Ville : Angers
Non connecté
  Posté le 16 mars 2007 - 14 h 51 m 16 s
EM.Bzzz > je viens de relire mon 1er post effectivement je n'avais pas precise pour le onsubmit, ca portait a confusion, je comprends mieux ta remarque initiale :jap:



:firefox:

Page genérée en 0.5190 secondes par RahForum 2.0 | Gzip off |  Stats |  Metaforums |  RSS
© 2004 Cerbere Systems.
Prix Matériel Informatique | Informatique Lyon | Informatique Grenoble | Informatique Annecy | Informatique Marseille | Informatique Bordeaux | Forum Informatique
ADSL |Actualité ADSL | e-commerce | Commande Au Volant
Creative Commons
Message Boards and Forums Directory