Salut à tous.
Je viens à vous car j'ai un petit soucis avec un formulaire, enfin plus précisément sa vérification en JS.
Le formulaire est animé via jquerry.
La vérification fonctionne lorsque je laisse le "return false;" à la fin du code mais ceci bloc l'envoie du mail même si tout best ok...
Si je l'enlève, la vérification fonctionne (enfin on a le temps de voir que ça indique bien qu'un des champs n'est pas rempli si c'est le cas) mais ça envoie le mail quand même directement...
Donc en gros, ma vérification ne fonctionne qu'à moitié!
Je ne suis pas calé en prog donc je galère un peu et réclame votre aide car personne sur aucun forum n'a sur m'aider!
Si quelqu'un voit le problème, qu'il m'en fasse part, ça serait sympa.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103 $(document).ready(function() { /* gestion du focus / blur */ $(":input[@type!='submit']").focus(function () { $(this).removeClass(); $(this).addClass("focus"); $(this).parent().find(".exemple").css({display:"block"}); }); $(":input[@type!='submit']").blur(function () { $(this).removeClass(); $(this).addClass("normal"); $(this).parent().find(".exemple").css({display:"none"}); }); /*effet alerte*/ function alerte(e) { $(e).animate({ fontSize:"1.2em" }, 150, function(){ $(e).animate({ fontSize:"1em" }, 150); }); $(e).find("input").removeClass(); $(e).find("input").addClass("erreur"); $(e).find(".exemple").css({display:"block"}); } /* contrôle global */ $("form").submit(function(){ var re1= /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/; /*expr regul pour l'email */ var re2 = /^[-]?\d*\.?\d*$/; /*expr regul pour les chiffres*/ var re3 = /\b.{10}\b/; /*expr regul 10 caractères*/ $(":input").each(function(){ var valeur = $(this).val(); /* valeur saisie par l'utilisateur */ var nom = $(this).attr("name"); /*nom du champ */ var label = "l_"+nom; /* id du label */ var p = $("#"+label+"").parent(); $(this).parent().find(".exemple").css({display:"none"}); if(valeur==''){ /* si c'est vide c'est pas bon */ alerte(p); return false; } if(nom =='eMail') { /* teste le format */ if(!valeur.match(re1)) { alerte(p); return false; } } if(nom =='tel') { /* teste le format (chiffes please !) */ if((!valeur.match(re2)) || (!valeur.match(re3))) { alerte(p); return false; } } }); return false; }); });
ps: Le formulaire en question est ici si ça peut vous aider
ps2: On m'avait conseillé de changer la fin de mon code apr celui-ci mais en vain:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 $("form").submit(function(){ var re1 = /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/; var re2 = /^[-]?\d*\.?\d*$/; var re3 = /\b.{10}\b/; var valide = true; $(":input").each(function(){ var valeur = $(this).val(); var nom = $(this).attr("name"); var label = "l_"+nom; var $p = $("#"+label).parent(); $(this).parent().find(".exemple").css({display:"none"}); if(valeur==''){ alerte($p); valide = false; } if(nom=='eMail') { if(!valeur.match(re1)) { alerte(p); valide = false; } } if(nom =='tel') { if((!valeur.match(re2)) || (!valeur.match(re3))) { alerte(p); valide = false; } } }); return valide; });
Merci d'avance.
Partager