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 :
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'.
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); }
Pourquoi ?
Merci
Partager