Salut tout le monde,
j'ai un formulaire d'inscription avec 4 champs Pseudo, Email, pwd1, pwd2 et tous les champs fonctionnent bien sauf le contrôle du champ Email.
Je veux que les utilisateurs respectent ce format xxx@xxx.xxx en saisissant leur adresse mail et si un paramètre n'est pas respecté soit par l'absence de @ ou l'omission du nom de domaine (.fr, .com, ...) que le Tooltips correspondant s'active jusqu'à ce que le format soit respecté et c'est ce qui ne se fait pas et si quelqu'un pouvait corriger mon formulaire. Merci d'avance
Voici mon code css
Et voici le code du formulaire
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 <style> body { padding-top: 50px; } .form_col { display: inline-block; margin-right: 15px; padding: 3px 0px; width: 200px; min-height: 1px; text-align: right; } input { padding: 2px; border: 1px solid #CCC; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px; } input:focus { border-color: rgba(82, 168, 236, 0.75); -moz-box-shadow: 0 0 8px rgba(82, 168, 236, 0.5); -webkit-box-shadow: 0 0 8px rgba(82, 168, 236, 0.5); box-shadow: 0 0 8px rgba(82, 168, 236, 0.5); } .correct { border-color: rgba(68, 191, 68, 0.75); } .correct:focus { border-color: rgba(68, 191, 68, 0.75); -moz-box-shadow: 0 0 8px rgba(68, 191, 68, 0.5); -webkit-box-shadow: 0 0 8px rgba(68, 191, 68, 0.5); box-shadow: 0 0 8px rgba(68, 191, 68, 0.5); } .incorrect { border-color: rgba(191, 68, 68, 0.75); } .incorrect:focus { border-color: rgba(191, 68, 68, 0.75); -moz-box-shadow: 0 0 8px rgba(191, 68, 68, 0.5); -webkit-box-shadow: 0 0 8px rgba(191, 68, 68, 0.5); box-shadow: 0 0 8px rgba(191, 68, 68, 0.5); } .tooltip { display: inline-block; margin-left: 20px; padding: 2px 4px; border: 1px solid #555; background-color: #CCC; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; } </style>
Et voici le code JavaScript correspondant:
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 <form id="myForm" action="verifformulaire.php" method="post"> <label class="form_col" for="Pseudo">Pseudo :</label> <input name="Pseudo" id="Pseudo" type="text" /> <span class="tooltip">Le pseudo ne peut pas faire moins de 4 caractères</span> <br /><br /> <label class="form_col" for="Email">e-mail :</label> <input name="Email" id="Email" type="text" /> <span class="tooltip">Votre é-mail doit être de la forme xxx@xxx.xxx</span> <br /><br /> <label class="form_col" for="pwd1">Mot de passe :</label> <input name="pwd1" id="pwd1" type="password" /> <span class="tooltip">Le mot de passe ne doit pas faire moins de 6 caractères</span> <br /><br /> <label class="form_col" for="pwd2">Mot de passe (confirmation) :</label> <input name="pwd2" id="pwd2" type="password" /> <span class="tooltip">Le mot de passe de confirmation doit être identique à celui d'origine</span> <br /><br /> <span class="form_col"></span> <label><input name="news" type="checkbox" /> Je désire recevoir la newsletter chaque mois.</label> <br /><br /> <span class="form_col"></span> <input type="submit" value="M'inscrire" /> <input type="reset" value="Réinitialiser le formulaire" /> </form>
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162 <script type="text/javascript"> // Fonction de désactivation de l'affichage des "tooltips" function deactivateTooltips() { var spans = document.getElementsByTagName('span'), spansLength = spans.length; for (var i = 0 ; i < spansLength ; i++) { if (spans[i].className == 'tooltip') { spans[i].style.display = 'none'; } } } // La fonction ci-dessous permet de récupérer la "tooltip" qui correspond à notre input function getTooltip(el) { while (el = el.nextSibling) { if (el.className == 'tooltip') { return el; } } return false; } // Fonctions de vérification du formulaire, elles renvoient "true" si tout est ok var check = {}; // On met toutes nos fonctions dans un objet littéral check['Pseudo'] = function(id) { var name = document.getElementById(id), tooltipStyle = getTooltip(name).style; if (name.value.length >= 3) { name.className = 'correct'; tooltipStyle.display = 'none'; return true; } else { name.className = 'incorrect'; tooltipStyle.display = 'inline-block'; return false; } }; check['Email'] = function() { // La fonction pour le prénom est la même que celle du nom var regex=document.getElementById('Email'), tooltipStyle = getTooltip(regex).style; //regex = /^[a-zA-Z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$/; if(regex.value.length =/^[a-zA-Z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$/) { regex.className = 'correct'; tooltipStyle.display = 'none'; return true; } else { regex.className = 'incorrect'; tooltipStyle.display = 'inline-block'; return false; } }; check['pwd1'] = function() { var pwd1 = document.getElementById('pwd1'), tooltipStyle = getTooltip(pwd1).style; if (pwd1.value.length >= 6) { pwd1.className = 'correct'; tooltipStyle.display = 'none'; return true; } else { pwd1.className = 'incorrect'; tooltipStyle.display = 'inline-block'; return false; } }; check['pwd2'] = function() { var pwd1 = document.getElementById('pwd1'), pwd2 = document.getElementById('pwd2'), tooltipStyle = getTooltip(pwd2).style; if (pwd1.value == pwd2.value && pwd2.value != '') { pwd2.className = 'correct'; tooltipStyle.display = 'none'; return true; } else { pwd2.className = 'incorrect'; tooltipStyle.display = 'inline-block'; return false; } }; // Mise en place des événements (function() { // Utilisation d'une fonction anonyme pour éviter les variables globales. var myForm = document.getElementById('myForm'), inputs = document.getElementsByTagName('input'), inputsLength = inputs.length; for (var i = 0 ; i < inputsLength ; i++) { if (inputs[i].type == 'text' || inputs[i].type == 'password') { inputs[i].onkeyup = function() { check[this.id](this.id); // "this" représente l'input actuellement modifié }; } } myForm.onsubmit = function() { var result = true; for (var i in check) { result = check[i](i) && result; } if (result) { alert('Le formulaire est bien rempli.'); } return false; }; myForm.onreset = function() { for (var i = 0 ; i < inputsLength ; i++) { if(inputs[i].type == 'text' || inputs[i].type == 'password') { inputs[i].className = ''; } } deactivateTooltips(); }; })(); // Maintenant que tout est initialisé, on peut désactiver les "tooltips" deactivateTooltips(); </script>
Partager