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 637 membres enregistrés - 1 883 807 posts - 96 196 topics
Index des forums FH  | Index des forums DegroupNews
      Programmation
           [JS] Problème de validation de formulaire particulier
20 connectés(record : 207 le 05 juin 2007 - 05 h 23)

Vous devez vous connecter pour répondre au topic.
[JS] Problème de validation de formulaire particulier

grabber
Coordinateur
MacBook Pro 2,4 Powered

Messages : 8 528
Inscrit le 06/03/02
Ville : Angers
Non connecté
  Posté le 17 octobre 2006 - 16 h 23 m 36 s
hello,

j'ai un petit souci sur lequel je rame depuis une bonne heure...
alors voila, dans une application, j'ai une fiche client, cette fiche client est tres complete car pour une activite precise.
j'ai donc plein de champs, genre identite...
mais j'ai aussi des champs "contact", sachant que l'utilisateur a la possibilite de creer 4 types de contact : tel / fax / mail / web
chaque contact client est defini comme suit dans ma table :
- id contact
- id du client
- id du type contact (1=tel / 2=fax / 3=mail / 4=site)
- id de la nature du contact (pour les telephones par exemple, 1=perso / 2=boulot + 1 cas particulier : 0=autre avec autre à remplir en dessous)
- valeur
- champ other pour le contenu de nature contact si nature=0

voila pour la structure.

maintenant, pour valider mes contacts, j'utilise des expressions regulieres en javascript, ca marche tres bien, mais il me reste un probleme.... le nombre de contacts n'etant pas le meme pour tous les clients (infinite de contacts possibles pour un client), j'ai des noms de champs qui se creent en s'incrementant automatiquement, par exemple si 3 champs telephone + 2 champs fax :
- cli_tel_1
- cli_tel_2
- cli_tel_3
- cli_fax_1
- cli_fax_2
(en version simple...)

Et voila ou se trouve le probleme.... en effet, pour pouvoir valider en ereg, je lance onsubmit une fonction de verif de mes champs, sauf que cette fonction ne peut pas apprehender les champs du client courant car elle ne les connait pas du debut.

pour palier a ca, a chaque fois que j'affiche un champ des contacts, je stocke le nom du champ genere dans une chaine avec <<>> comme separateur puis je stocke cette chaine dans un input hidden ;) ensuite, en theorie, plus qu'a tester les champs repris dans le hidden en fonction des eregs, sachant que forcement c'est pas la meme ereg pour un telephone que pour un mail...

donc avant de passer par cette 1ere fonction, j'en ai cree une autre en onsubmit aussi qui la precede et qui ne va traiter que les contacts, tant que la 1ere ne passe pas, ca retourne false et donc la seconde (pour le reste du formulaire) ne s'execute pas. ca ca marche deja.

le probleme que j'ai est que je n'arrive pas a tester mes valeurs via mes ereg a cause du libelle du champs a tester.

voici ma fonction :

    Code     
 1. function Valid_contacts(form) {
 2. 	
 3. 	alert ('debut');
 4. 	
 5. 	var fullstring=form.verif_champs_contact.value;
 6. 	var brokenstring=fullstring.split("<<>>");
 7. 	for (var i=0;i<brokenstring.length; i++) {
 8. 		
 9. 		var champs=brokenstring[i];
10. 		alert(champs);
11. 		
12. 		// on test le nom du champs pour determiner la regexp
13. 		var chaine_test=champs.substring(0,7);
14. 		//alert(chaine_test);
15. 		
16. 		var var_to_test="form." + champs + ".value";
17. 		
18. 		switch (chaine_test) {
19. 			case 'cli_tel':
20. 			  //alert ('tel');
21. 			  //alert(var_to_test);
22. 			  if (isEmpty(var_to_test)) { alert('chp tel vide'); } else { alert('pas vide'); }
23. 			  
24. 			  break;
25. 			case 'cli_fax':
26. 			  alert ('fax');
27. 			  break;
28. 			case 'cli_mai':
29. 			  alert('mail');
30. 			  break;
31. 			case 'cli_sit':
32. 			  alert('site');
33. 			  break;
34. 		}
35. 
36. 		
37. 		
38. 	}
39. 	
40. 	alert ('fin');
41. 	
42. 	return false;
43. 	
44. }


vous l'aurez compris, var_to_test represente ce qui theoriquement serait : form.mon_champs.value
le probleme c'est que ca passe pas dans mon ereg et je sais pas comment m'en sortir, c'est soit considere comme une chaine si je met des simples quotes autour, ce qui ne m'interesse pas, soit ca ne marche carrement pas.

moi ce que je veux c'est :
- extraire la variable de la chaine initiale -> OK
- en determiner le type -> OK
- en recuperer la valeur pour la tester -> pas OK :@

quelqu'un aurait une idee ????


merci d'avance,
oliv



:firefox:

Erel69
206
(¯`·.__[T3aM.L1b3rTe©]__.·´¯)

Messages : 19 449
Inscrit le 07/11/01
Ville : Lyon
Non connecté
  Posté le 17 octobre 2006 - 17 h 51 m 27 s
Ben là

    Code     
1. var var_to_test="form." + champs + ".value";
C'est une chaine de caractère tout bête. Pour récupérer la valeur tu peux faire
    Code     
1. var var_to_test = form[champs].value;
ou
    Code     
1. eval('var var_to_test = form.' + champs + '.value');



Obscurité au-delà du crépuscule, pourpre au-delà du sang qui coule, enfoui dans le flot du temps, en ton haut nom, je jure fidélité à l'obscurité. Que les fous qui se dressent devant nous soient détruits, par le pouvoir que toi et moi possédons...

grabber
Coordinateur
MacBook Pro 2,4 Powered

Messages : 8 528
Inscrit le 06/03/02
Ville : Angers
Non connecté
  Posté le 18 octobre 2006 - 09 h 42 m 19 s
ok je test, merci :)



:firefox:

grabber
Coordinateur
MacBook Pro 2,4 Powered

Messages : 8 528
Inscrit le 06/03/02
Ville : Angers
Non connecté
  Posté le 18 octobre 2006 - 09 h 56 m 39 s
hello erel,

merci beaucoup, j'ai utilise la 3eme propal avec eval :)
en fait n'etant pas tres fort en js, je n'utilisais jamais eval, c'est une bonne chose que tu m'aies montre ca, cela m'est tres utile :jap:

++



:firefox:

Erel69
206
(¯`·.__[T3aM.L1b3rTe©]__.·´¯)

Messages : 19 449
Inscrit le 07/11/01
Ville : Lyon
Non connecté
  Posté le 18 octobre 2006 - 12 h 35 m 29 s
De rien :)

Content que tu aies appris un truc, car le JS c'est quand même bien galère :P



Obscurité au-delà du crépuscule, pourpre au-delà du sang qui coule, enfoui dans le flot du temps, en ton haut nom, je jure fidélité à l'obscurité. Que les fous qui se dressent devant nous soient détruits, par le pouvoir que toi et moi possédons...

Page genérée en 0.4553 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