Bonjour,
j'ai un formulaire dans lequel il faut entrer une date, selon plusieurs formats, comme yyyy, MM/yyyy ou dd/MM/yyyy.

Il se trouve que dans le cas de la date complète, j'ai un problème que je n'arrive pas à comprendre :
lorsque j'écris : '18/07/2008', ça marche bien.
En revanche : '18/09/2008' ou '18/08/2006' ne marchent pas bien du tout.

Pourquoi ça ne marche pas pour le mois d'aout et de septembre (quelle que soit l'année et le jour) ?

Voici mon code :

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
 
function ajouterVideo(){	
	if(!isDate($F('dateVideo'))&&($F('dateVideo')!='')){
		alert(msgErrorBadDate);	
		return;
	}
}
 
function isDate(sDate){
	var sSeparator = '/';
	if(!sDate.match("(^(([0-2][0-9])|30|31)/((0[1-9])|(1[0-2]))/((19)|(20))[0-9]{2}$)|(^((19)|(20))[0-9]{2}$)|(^((0[1-9])|(1[0-2]))/((19)|(20))[0-9]{2}$)")){
		return false;
	}
	if(sDate.match("(^(([0-2][0-9])|30|31)/((0[1-9])|(1[0-2]))/((19)|(20))[0-9]{2}$)")){
		var arDate = sDate.split(sSeparator);
		var iDay = parseInt(arDate[0]);
		var iMonth = parseInt(arDate[1]);
		var iYear = parseInt(arDate[2]);
		alert(arDate);
		alert(iDay);
		alert(iMonth);
		alert(iYear);
		var arDayPerMonth = [31,(isLeapYear(iYear))?29:28,31,30,31,30,31,31,30,31,30,31];
 
		if(!arDayPerMonth[iMonth-1]) return false;
			return (iDay <= arDayPerMonth[iMonth-1] && iDay > 0);
		}
	else return true;
}
 
function isLeapYear(iYear){
	return ((iYear%4==0 && iYear%100!=0) || iYear%400==0);
}
Le problème se situe selon moi au niveau de la fonction isDate(), lors du parsing de arDate : quand je rentre '18/09/2008', par exemple, alert(arDate) m'affiche bien '18,9,2008' mais alert(iMonth) m'affiche '0'.
Pourquoi ?

Merci