Mara's dad Yes I can ! | Code :
- <html>
- <head>
- <script>
- // Vérifie qu'une date est bien saisie dans le format JJ/MM/AAAA
- function checkDate( oDateToCheck )
- {
- var dDate; // Utilisé pour générer un objet Date
- var nDate; // Utilisé pour générer une référence temporelle numérique !
- var aDate; // Tableau des éléments du champs de saisie séparés par de "/"
- // Messages d'erreur.
- var sErrFormat = "La date doit être saisie dans le format JJ/MM/AAAA !";
- var sErrFormatJour = "Le jour doit être compris entre 1 et 31 !";
- var sErrFormatMois = "Le mois doit être compris entre 1 et 12!";
- var sErrFormatAnnee = "L'année doit être sur 1,2 ou 4 chiffres !";
- // Suppression des espaces du début
- oDateToCheck.value = oDateToCheck.value.replace( /^\s+/, "" );
- // Suppression des espaces de fin
- oDateToCheck.value = oDateToCheck.value.replace( /\s+$/, "" );
- // Remplacement des espaces par des /
- oDateToCheck.value = oDateToCheck.value.replace( /\s+/, "/" );
- oDateToCheck.value = oDateToCheck.value.replace( /\s+/, "/" );
- oDateToCheck.value = oDateToCheck.value.replace( /\s+/, "/" );
- oDateToCheck.ok = false;
- //cas d'une date vide
- if( oDateToCheck.value == "" )
- {
- oDateToCheck.ok = true;
- return true;
- }
- // Séparation des éléments de la date.
- aDate = oDateToCheck.value.split( "/" );
- // On vérifie qu'on a bien 3 éléments
- if( aDate.length != 3 )
- {
- // S'il n'y as pas de /, on découpe la chaine en 3 si sa longueur est 6 ou 8
- if( aDate.length == 1 )
- {
- if( oDateToCheck.value.length < 3 )
- {
- dDate = new Date();
- aDate[0] = oDateToCheck.value;
- aDate[1] = "" + ( dDate.getMonth() + 1 );
- aDate[2] = "" + dDate.getFullYear();
- }
- else if( oDateToCheck.value.length == 6 )
- {
- aDate[0] = oDateToCheck.value.substr( 0, 2);
- aDate[1] = oDateToCheck.value.substr( 2, 2);
- aDate[2] = oDateToCheck.value.substr( 4, 2);
- }
- else if( oDateToCheck.value.length == 8 )
- {
- aDate[0] = oDateToCheck.value.substr( 0, 2);
- aDate[1] = oDateToCheck.value.substr( 2, 2);
- aDate[2] = oDateToCheck.value.substr( 4, 4);
- }
- else
- {
- alert( sErrFormat );
- return false;
- }
- }
- else
- {
- alert( sErrFormat );
- return false;
- }
- }
- // On vérifie que c'est bien des nombres
- if( isNaN( aDate[0] ) || isNaN( aDate[1] ) || isNaN( aDate[2] ) )
- {
- alert( sErrFormat );
- return false;
- }
- // Vérification grossière sur le jour
- if( aDate[0] > 31 || aDate[0] < 1 )
- {
- alert( sErrFormatJour );
- return false;
- }
- // Vérification du mois
- if( aDate[1] > 12 || aDate[1] < 1 )
- {
- alert( sErrFormatMois );
- return false;
- }
- // Vérifier que l'année est bien sur 1, 2 ou 4 chiffres
- if( aDate[2].length != 1 && aDate[2].length != 2 && aDate[2].length != 4 )
- {
- alert( aDate[2].length );
- alert( sErrFormatAnnee );
- return false;
- }
- // Si l'année est sur 1 ou 2 chiffres, on la remet sur 4
- if( aDate[2] < 50 )
- {
- aDate[2] = 2000 + parseInt( aDate[2] );
- }
- else
- {
- if( aDate[2] >= 50 && aDate[2] < 100 )
- {
- aDate[2] = 1900 + parseInt( aDate[2] );
- }
- }
- // Création d'une référence temporelle numérique à partir des élémentnt de la date
- nDate = Date.parse( aDate[1] + "/" + aDate[0] + "/" + aDate[2] );
- // Vérification que la référence temporelle est une date valide
- if( isNaN( nDate ) )
- {
- alert( oDateToCheck.value + " n'est pas une date valide !" );
- return false;
- }
- else
- {
- // On renvoie la date formatée
- dDate = new Date( nDate )
- oDateToCheck.value = dDate.getDate() + "/" + ( dDate.getMonth() + 1 ) + "/" + dDate.getFullYear();
- oDateToCheck.ok = true;
- return true;
- }
- }
- </script>
- </head>
- <body>
- <form>
- <input type="text" id="myDate" onchange="checkDate(this);">
- </form>
- </body>
- </html>
|
Vérification de date en JS..
15 -> 15/6/2004
1 1 1 -> 1/1/2001
12 5 50 -> 12/5/2050
12 5 51 -> 12/5/1951
010105 -> 1/1/2005
23/04/2003 -> 23/4/2003
---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
|