Javascript controle de date

Fermé
marion25 - 31 mars 2009 à 09:20
NookZ Messages postés 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013 - 31 mars 2009 à 09:36
Bonjour,

J'ai un petit probleme avec ma fonction censée controler la date mais ça ne marche pas

J'ai un champ date, et un bouton "OK"

<?php
echo 'Date demande : <input type="text" name="Date_demande" size="10"/>';?>
echo'<input type="button" value="OK" name="Ok" onclick="verifdate();">';
?>


Et ensuite voici ma fonction verifdate()

<script type="text/javascript">
function verifdate()
{
if(document.formulaire.Date_demande.value==""){alert("Date manquante");return false;}
tdat=document.formulaire.Date_demande.value.split("/"); // On sépare ce qui a été saisi
testDate=new Date(tdat[2],tdat[1]-1,tdat[0]); // On crée une date avec
// Avec FireFox, on a 108 pour 2008, donc
if(testDate.getYear()<1000){tdat[2]=tdat[2]-1900;}
if((testDate.getDate()!=tdat[0])||(testDate.getMonth()!=tdat[1]-1)||(testDate.getYear()!=tdat[2])){
alert("Date erronée");return false;}
return true;
}


</script>



Ai je oublier quelque chose?
Merci de votre aide
A voir également:

1 réponse

NookZ Messages postés 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013 513
31 mars 2009 à 09:36
Je vois déjà un premier soucis, c'est qu'il faudrait vérifier déjà que la date était bien composée de / (1/) ou alors forcer ce format déjà en partie grâce au HTML(2/).

1/if(tdat[0])
2/
<?php
echo 'Date demande : <input type="text" name="Jour_demande" size="2"/>/<input type="text" name="Mois_demande" size="2"/>/<input type="text" name="Annee_demande" size="3"/>';?>

Sinon je ne comprend pas la logique de ceci :
if(testDate.getYear()<1000){tdat[2]=tdat[2]-1900;}
car si tu as bien 108 pour récupérer 2008, il faudrait faire
if(testDate.getYear()<1000){tdat[2]=tdat[2]+1900;}

Ensuite si on suit ta logique, il faudrait effectuer la création de date après avoir remis l'année à 2008 sinon la date sera faussée

testDate=new Date(tdat[2],tdat[1]-1,tdat[0]); // On crée une date avec
// Avec FireFox, on a 108 pour 2008, donc
if(testDate.getYear()<1000){
tdat[2]=tdat[2]-1900;
testDate=new Date(tdat[2],tdat[1]-1,tdat[0]); // On recrée la date après avoir récupérée l'année correcte
}
0