Vérification cohérence de date

Le
Alain BARTHE
Bonjour,

J'aurais besoin de vérifier, en Javascript, la saisie d'une date dans un
formulaire PHP.

Je veux juste vérifier que ma chaine yyyy-mm-dd, dont je peux bien sur
isoler année, mois et jour forme une date correcte.

Je suppose que la question est classique, voire déjà traitée, mais j'ai
regardé sur le net et j'ai trouvé des quantités de scripts, allant de
quelques lignes à plus de 600, sans savoir lequel choisir.

Y-a-t'il une solution, une librairie, qui s'impose plus ou moins?

NB : Je peux éventuellement utiliser JQuery, que je j'utilise déjà dans
une autre partie de mon site.

Alain
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Pascal
Le #22125071
Alain BARTHE a écrit :
Bonjour,



Bonjour,

Je veux juste vérifier que ma chaine yyyy-mm-dd, dont je peux bien su r
isoler année, mois et jour forme une date correcte.



Sans aller dans des bibliothèques compliquées, mais qui peut-être g èrent
davantage de choses, on peut partir de principes simples :

1. Le constructeur Date retourne toujours des dates valides.
2. Pour valider une date saisie, il suffit donc de la comparer à une
date construite sur les mêmes composantes.

j'ai fait ça rapido, alors il faut sûrement perfectionner, mais les
principes sont là : http://www.copypastecode.com/28846/

Cordialement,
Pascal
Alain BARTHE
Le #22125151
Pascal a écrit :
Alain BARTHE a écrit :
Bonjour,



Bonjour,

Je veux juste vérifier que ma chaine yyyy-mm-dd, dont je peux bien sur
isoler année, mois et jour forme une date correcte.



Sans aller dans des bibliothèques compliquées, mais qui peut-être gèrent
davantage de choses, on peut partir de principes simples :

1. Le constructeur Date retourne toujours des dates valides.
2. Pour valider une date saisie, il suffit donc de la comparer à une
date construite sur les mêmes composantes.

j'ai fait ça rapido, alors il faut sûrement perfectionner, mais les
principes sont là : http://www.copypastecode.com/28846/

Cordialement,
Pascal



Merci, ça semble effectivement simple et efficace.
SAM
Le #22126331
Le 5/16/10 6:36 PM, Alain BARTHE a écrit :
Bonjour,

J'aurais besoin de vérifier, en Javascript, la saisie d'une date dans un
formulaire PHP.

Je veux juste vérifier que ma chaine yyyy-mm-dd, dont je peux bien sur
isoler année, mois et jour forme une date correcte.



yyy-mm-dd ou jj-mm-aaaa ?

vérifier quoi ?
que ce n'est pas le 30 février ?
ou le 31 avril ?

en supposant qu'on a déjà vérifié que le champs contenait le nbre de
caractères requis et le bon séparateur et que le début est bien l'année

function dateOk() {
var d = document.forms[0]['date'],
d1 = d.value.split('-');
if(d1.length == 3) {
var d2 = new Date(d1[0], (d1[1]-1), d1[2]),
y = d2.getFullYear(),
m = d2.getMonth()+1,
j = d2.getDate();
if(j<10) j = '0'+j;
if(m<10) m = '0'+m;
if(d.value != y+'-'+m+'-'+j) alert('date erreur');
}
else alert('erreur format date (séparateur: -)');
}

Sinon qque chose qui vérifie le 28 février, le 31 avril,
et rentre la date au bon format même si était: 99/2/7
(séparateurs acceptés : / . _ espace - )

function dateOk() {
var d = document.forms[0]['date'],
d1 = d.value.split(/[./_s-]/);
if(d1.length == 3) {
var d2 = new Date(d1[0], (d1[1]-1), d1[2]),
y = d2.getFullYear(),
m = d2.getMonth()+1,
j = d2.getDate();
if(m > d1[1]) {
alert('il n'y a pas '+d1[2]+' jours au mois '+d1[1]);
return;
}
if(j<10) j = '0'+j;
if(m<10) m = '0'+m;
d.value = y+'-'+m+'-'+j;
}
else alert('erreur format date (séparateur: -)');
}

--
sm
Dr J R Stockton
Le #22131441
En fr.comp.lang.javascript message <4bf03bbe$0$2872$
r>, 16 May 2010 20:38:54, Alain BARTHE écrit :

Pascal a écrit :
Alain BARTHE a écrit :
Bonjour,


Bonjour,

Je veux juste vérifier que ma chaine yyyy-mm-dd, dont je peux bien
sur isoler année, mois et jour forme une date correcte.


Sans aller dans des bibliothèques compliquées, mais qui peut-être
gèrent davantage de choses, on peut partir de principes simples :
1. Le constructeur Date retourne toujours des dates valides.
2. Pour valider une date saisie, il suffit donc de la comparer à une
date construite sur les mêmes composantes.
j'ai fait ça rapido, alors il faut sûrement perfectionner, mais les
principes sont là : http://www.copypastecode.com/28846/
Cordialement,
Pascal



Merci, ça semble effectivement simple et efficace.



It looks unnecessarily complicated. Match the pattern with a RegExp
(ensuring 00<Ý<™), use new Date(Y, M', D), and check getMonth().

See in "String Input" and onwards.

It's a good idea to read the newsgroup c.l.j and its FAQ. See below.

--
(c) John Stockton, nr London UK. ?@merlyn.demon.co.uk IE8 FF3 Op10 Sf4 Cr4
news:comp.lang.javascript FAQ
Alain BARTHE
Le #22132731
Dr J R Stockton a écrit :
En fr.comp.lang.javascript message <4bf03bbe$0$2872$
r>, 16 May 2010 20:38:54, Alain BARTHE écrit :

Pascal a écrit :
Alain BARTHE a écrit :
Bonjour,


Bonjour,

Je veux juste vérifier que ma chaine yyyy-mm-dd, dont je peux bien
sur isoler année, mois et jour forme une date correcte.


Sans aller dans des bibliothèques compliquées, mais qui peut-être
gèrent davantage de choses, on peut partir de principes simples :
1. Le constructeur Date retourne toujours des dates valides.
2. Pour valider une date saisie, il suffit donc de la comparer à une
date construite sur les mêmes composantes.
j'ai fait ça rapido, alors il faut sûrement perfectionner, mais les
principes sont là : http://www.copypastecode.com/28846/
Cordialement,
Pascal


Merci, ça semble effectivement simple et efficace.



It looks unnecessarily complicated. Match the pattern with a RegExp
(ensuring 00<Ý<™), use new Date(Y, M', D), and check getMonth().

See in "String Input" and onwards.

It's a good idea to read the newsgroup c.l.j and its FAQ. See below.



I made a short try with ISOSDateValue() found in js-date4.htm
and it works perfectly.

Many thanks for your help.
Pierre Goiffon
Le #22133911
On 16/05/2010 18:36, Alain BARTHE wrote:
J'aurais besoin de vérifier, en Javascript, la saisie d'une date dans un
formulaire PHP.



Votre besoin est sans doute répondu par ce qui a été indiqué dans ce fil.
Je voulais juste signaler la librairie ici :
http://www.javascripttoolbox.com/lib/date/documentation.php
Nous l'avons intégrée dans nos produit à mon travail et je conseille
vivement !
Dr J R Stockton
Le #22136561
En fr.comp.lang.javascript message <4bf0b8f8$0$2955$
.orange.fr>, Lun, 17 May 2010 05:33:12, SAM
adoo.fr.invalid> a écrit:

en supposant qu'on a déjà vérifié que le champs contenait le nbre de
caractères requis et le bon séparateur et que le début est bien l'année

function dateOk() {
var d = document.forms[0]['date'],
d1 = d.value.split('-');
if(d1.length == 3) {
var d2 = new Date(d1[0], (d1[1]-1), d1[2]),
y = d2.getFullYear(),
m = d2.getMonth()+1,
j = d2.getDate();
if(j<10) j = '0'+j;
if(m<10) m = '0'+m;
if(d.value != y+'-'+m+'-'+j) alert('date erreur');
}
else alert('erreur format date (séparateur: -)');
}




function dateOk() {
var d = document.forms[0]['date'],
d1 = d.value.split('-'); // meilleure avec une RegExp
if(d1.length == 3) {
var d2 = new Date(d1[0], (d1[1]-1), d1[2]),
// y = d2.getFullYear(),
m = d2.getMonth()+1 // ,
// j = d2.getDate();
// if(j<10) j = '0'+j;
// if(m<10) m = '0'+m;
// if(d.value != y+'-'+m+'-'+j)
/* + */ if (d1[1] != m)
alert('date erreur'); // qu'il reste
}
else alert('erreur format date (séparateur: -)');
}

--
(c) John Stockton, nr London, UK. ?@merlyn.demon.co.uk Turnpike v6.05.
Web PAS EXE etc : Dates - miscdate.htm estrdate.htm js-dates.htm pas-time.htm critdate.htm etc.
SAM
Le #22137501
Le 5/18/10 7:41 PM, Dr J R Stockton a écrit :
En fr.comp.lang.javascript message <4bf0b8f8$0$2955$
.orange.fr>, Lun, 17 May 2010 05:33:12, SAM
adoo.fr.invalid> a écrit:

en supposant qu'on a déjà vérifié que le champs contenait le nbre de
caractères requis et le bon séparateur et que le début est bien l'année




(...)

function dateOk() {
var d = document.forms[0]['date'],
d1 = d.value.split('-'); // meilleure avec une RegExp



absolutly

if(d1.length == 3) {
var d2 = new Date(d1[0], (d1[1]-1), d1[2]),
// y = d2.getFullYear(),
m = d2.getMonth()+1 // ,
// j = d2.getDate();
// if(j<10) j = '0'+j;
// if(m<10) m = '0'+m;
// if(d.value != y+'-'+m+'-'+j)
/* + */ if (d1[1] != m)
alert('date erreur'); // qu'il reste



yes

}
else alert('erreur format date (séparateur: -)');
}



Oui il y a pas mal de choses inutiles,
cependant les compléments sont là pour permettre d'aller un peu plus
loin comme de corriger la date directement dans le champ.

'y' and 'd' above where to allow to go further
in this idea, field accepts : 10/5/19
(expecting yet that the date format is not in french)
and the function re-enter the date in wanted format,
something like that :

function dateOk() {
var d = document.forms[0]['date'],
d0 = d.value,
d1 = d0.split(/[./_s-]/); // a bit of regexp
// much better : d0.split(/D+/);
if(d1.length == 3) {
if(d1[0].length==2)
d1[0] = prompt('L'année est bien : 20'+d1[0]+
' ?nSimon corrigez ci-dessous','20'+d1[0]);
var d2 = new Date(d1[0], (d1[1]-1), d1[2]),
y = d2.getFullYear(),
m = d2.getMonth()+1,
j = d2.getDate(),
c = ['','janvier','février','mars','avril','mai','juin','juillet',
'aout','septembre','octobre','novembre','décembre'];
if(m > d1[1]) {
alert('il n'y a pas '+d1[2]+' jours au mois de '+c[d1[1]]);
d.focus(); d.select();
return;
}
if(j<10) j = '0'+j;
if(m<10) m = '0'+m;
d.value = y+'-'+m+'-'+j;
}
else alert('erreur format daten( AAAAA-MM-JJ )');
if(d0 != d.value) alert('contrôlez bien votre date !');
}

--
sm
Publicité
Poster une réponse
Anonyme