376 |
jpm |
1 |
/*
|
|
|
2 |
Origine du script : http://actuel.fr.selfhtml.org/articles/javascript/controle_formulaire/index.htm
|
|
|
3 |
Auteur : Dieter RABER <d.raber@gmx.net>
|
|
|
4 |
*/
|
|
|
5 |
function validate(sender, myarray, err_hd) {
|
|
|
6 |
|
|
|
7 |
var message_erreur = !err_hd?new Array('Les erreurs suivantes sont survenues:\n'):new Array(err_hd+'\n');
|
|
|
8 |
var error = false;
|
|
|
9 |
|
|
|
10 |
if (!sender.name) {
|
|
|
11 |
alert('Le formulaire doit comporter un attribut name');
|
|
|
12 |
return false;
|
|
|
13 |
}
|
|
|
14 |
|
|
|
15 |
for (i = 0; i < myarray.length; i++) {
|
|
|
16 |
field = document.forms[sender.name].elements[myarray[i][0]];
|
|
|
17 |
|
|
|
18 |
/* Bloc 1 vérifie les champs qui doivent être renseignés */
|
|
|
19 |
if (myarray[i][1].indexOf('e') > -1) {
|
|
|
20 |
if (!field.value) {
|
|
|
21 |
error = true;
|
|
|
22 |
message_erreur.push(myarray[i][2]);
|
|
|
23 |
}
|
|
|
24 |
}
|
|
|
25 |
|
|
|
26 |
/* Bloc 2 vérifie si l'adresse électronique est correcte dans la forme */
|
|
|
27 |
else if (myarray[i][1].indexOf('m')>-1) {
|
|
|
28 |
if (field.value) {
|
|
|
29 |
var usr = "([a-zA-Z0-9][a-zA-Z0-9_.-]*|\"([^\\\\\x80-\xff\015\012\"]|\\\\[^\x80-\xff])+\")";
|
|
|
30 |
var domain = "([a-zA-Z0-9][a-zA-Z0-9._-]*\\.)*[a-zA-Z0-9][a-zA-Z0-9._-]*\\.[a-zA-Z]{2,5}";
|
|
|
31 |
var regex = "^"+usr+"\@"+domain+"$";
|
|
|
32 |
var myrxp = new RegExp(regex);
|
|
|
33 |
var check = (myrxp.test(field.value));
|
|
|
34 |
if (check!=true) {
|
|
|
35 |
error = true;
|
|
|
36 |
message_erreur.push(field.value+" "+myarray[i][2]);
|
|
|
37 |
}
|
|
|
38 |
}
|
|
|
39 |
}
|
|
|
40 |
|
|
|
41 |
/* Bloc 3 vérifie les champs dont la valeur doit être numérique */
|
|
|
42 |
else if (myarray[i][1].indexOf('n')>-1) {
|
|
|
43 |
var num_error = false;
|
|
|
44 |
if(field.value) {
|
|
|
45 |
var myvalue = field.value;
|
|
|
46 |
var num = myvalue.match(/[^0-9,\.]/gi)
|
|
|
47 |
var dot = myvalue.match(/\./g);
|
|
|
48 |
var com = myvalue.match(/,/g);
|
|
|
49 |
if (num!=null) {
|
|
|
50 |
num_error = true;
|
|
|
51 |
}
|
|
|
52 |
else if ((dot!=null)&&(dot.length>1)) {
|
|
|
53 |
num_error = true;
|
|
|
54 |
}
|
|
|
55 |
else if ((com!=null)&&(com.length>1)) {
|
|
|
56 |
num_error = true;
|
|
|
57 |
}
|
|
|
58 |
else if ((com!=null)&&(dot!=null)) {
|
|
|
59 |
num_error = true;
|
|
|
60 |
}
|
|
|
61 |
}
|
|
|
62 |
if (num_error==true) {
|
|
|
63 |
error = true;
|
|
|
64 |
message_erreur.push(myvalue+" "+myarray[i][2]);
|
|
|
65 |
}
|
|
|
66 |
}
|
|
|
67 |
|
|
|
68 |
/* Bloc 4 vérifie la valeur à l'aide d'une expression régulière sur un modèle déterminé */
|
|
|
69 |
else if (myarray[i][1].indexOf('r')>-1) {
|
|
|
70 |
var regexp = myarray[i][3];
|
|
|
71 |
if (field.value) {
|
|
|
72 |
if (!regexp.test(field.value)) {
|
|
|
73 |
error = true;
|
|
|
74 |
message_erreur.push(field.value+" "+myarray[i][2]);
|
|
|
75 |
}
|
|
|
76 |
}
|
|
|
77 |
}
|
|
|
78 |
|
|
|
79 |
/* Bloc 5 vérifie les champs qui doivent être formatés comme des prix et modifie éventuellement le formatage */
|
|
|
80 |
else if (myarray[i][1].indexOf('p')>-1) {
|
|
|
81 |
var myvalue = field.value;
|
|
|
82 |
var reg = /,-{1,}|\.-{1,}/;
|
|
|
83 |
var nantest_value = myvalue.replace(reg,"");
|
|
|
84 |
var num = nantest_value.match(/[^0-9,\.]/gi)
|
|
|
85 |
sep = myarray[i][1].substr(1,1)?myarray[i][1].substr(1,1):',';
|
|
|
86 |
if (field.value) {
|
|
|
87 |
var myvalue = field.value.replace(/\./,',');
|
|
|
88 |
if (myvalue.indexOf(',')==-1) {
|
|
|
89 |
field.value = myvalue+sep+'00';
|
|
|
90 |
}
|
|
|
91 |
else if (myvalue.indexOf(",--")>-1) {
|
|
|
92 |
field.value = myvalue.replace(/,--/,sep+'00');
|
|
|
93 |
}
|
|
|
94 |
else if (myvalue.indexOf(",-")>-1) {
|
|
|
95 |
field.value = myvalue.replace(/,-/,sep+'00');
|
|
|
96 |
}
|
|
|
97 |
else if (!myvalue.substring(myvalue.indexOf(',') + 2)) {
|
|
|
98 |
error=true;
|
|
|
99 |
message_erreur.push(field.value+" "+myarray[i][2]);
|
|
|
100 |
}
|
|
|
101 |
else if (myvalue.substring(myvalue.indexOf(',') + 3)!='') {
|
|
|
102 |
error=true;
|
|
|
103 |
message_erreur.push(field.value+" "+myarray[i][2]);
|
|
|
104 |
} else if (num!=null) {
|
|
|
105 |
error = true;
|
|
|
106 |
message_erreur.push(field.value+" "+myarray[i][2]);
|
|
|
107 |
}
|
|
|
108 |
}
|
|
|
109 |
}
|
|
|
110 |
|
|
|
111 |
/* Bloc 6 vérifie les champs de nom et rectifie éventuellement la casse */
|
|
|
112 |
else if (myarray[i][1].indexOf('c')>-1) {
|
|
|
113 |
var noble = new Array(" d\'", "de","von","van","der","d","la","da","of");
|
|
|
114 |
var newvalue='';
|
|
|
115 |
var myvalue = field.value.split(/\b/);
|
|
|
116 |
for (k=0;k<myvalue.length;k++) {
|
|
|
117 |
newvalue+= myvalue[k].substr(0,1).toUpperCase()+myvalue[k].substring(1);
|
|
|
118 |
}
|
|
|
119 |
for(k = 0; k < noble.length; k++){
|
|
|
120 |
var reg = new RegExp ("\\b"+noble[k]+"\\b","gi");
|
|
|
121 |
newvalue = newvalue.replace(reg,noble[k]);
|
|
|
122 |
}
|
|
|
123 |
field.value = newvalue;
|
|
|
124 |
}
|
|
|
125 |
}
|
|
|
126 |
|
|
|
127 |
/* En cas d'erreur, les messages d'erreur récoltés sont exploités ici puis affichés.
|
|
|
128 |
Si le formulaire est correctement rempli, il est transmis */
|
|
|
129 |
if (error) {
|
|
|
130 |
message_erreur = message_erreur.join('\n\xB7 ');
|
|
|
131 |
alert(message_erreur);
|
|
|
132 |
return false;
|
|
|
133 |
} else {
|
|
|
134 |
return true;
|
|
|
135 |
}
|
|
|
136 |
}
|