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 :
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