Subversion Repositories Sites.tela-botanica.org

Rev

Rev 609 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
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
}