j'aurais besoin d'aide pour faire un controle du format date en "aaaa-mm-jj" de deux champs text d'un formulaire.
Version imprimable
j'aurais besoin d'aide pour faire un controle du format date en "aaaa-mm-jj" de deux champs text d'un formulaire.
il y a un script de verification de validité de dates dans les contributions ...
Moi je le code suivant : sauf que le premier focntionne correctement mais le deuxieme m'indique que ma date de fin est fausse alors que cest le bon format.
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 var reg=new RegExp("^[0-9]{4}[-]{1}[0-9]{2}[-]{1}[0-9]{2}$","g"); var pdated=frm.pdatedeb.value; var pdatef=frm.pdatefin.value; var descr=frm.desc.value; if (!reg.test(pdated)){ alert('veuillez entrer une date de début valide (format aaaa-mm-jj).'); frm.pdatedeb.focus(); return false; } if (!reg.test(pdatef)) { alert('veuillez entrer une date de fin valide (format aaaa-mm-jj).'); frm.pdatefin.focus(); return false; }
tester une date avec une regexp est un non sens !!
il faut passer par les fonctions date de javascript
j'ai trouvé ca sur un forum et au départ cela fonctionnait tres bien.
je viens de trouver ca :
je vais essayer.
voilà j'ai gardé ceci et c'est nikel.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 //test pour date function IsGoodDate(mydate){ var thedate=mydate.split('-'); if((mydate.length!=10)|| (thedate.length!=3)|| (isNaN(parseInt(thedate[0])))|| (isNaN(parseInt(thedate[1])))|| (isNaN(parseInt(thedate[2])))|| (thedate[0].length<4)|| (thedate[1].length<2)|| (thedate[2].length<2)) return false; var an=eval(thedate[0]); var mo=eval(thedate[1]); var jo=eval(thedate[2]); var onedate=new Date(an,mo-1,jo); an=onedate.getYear(); if(an.length<4) an=an+1900; if((onedate.getDate()!=jo)|| (onedate.getMonth()!=mo-1)|| (onedate.getYear()!=an)) return false; return true; }
Comme quoi en cherchant un peu ... :ccool:
Sinon juste pour info, en plus générique il y a ceci
Source http://phpjs.org/functions/checkdate:366Code:
1
2
3
4 function checkdate (m, d, y) { return m > 0 && m < 13 && y > 0 && y < 32768 && d > 0 && d <= (new Date(y, m, 0)).getDate(); }
Certes mais ce n'est valable que jusqu'en 32768 :mouarf: