Mara's dad Yes I can ! | Dans ton formulaire, il ne faut pas confondre ID et NAME !
<INPUT NAME="date_non_formatee[1]" ID="date01" TYPE="text">
<INPUT NAME="date_non_formatee[2]" ID="date02" TYPE="text">
<INPUT NAME="date_non_formatee[3]" ID="date03" TYPE="text">
Dans le onChange, tu met l'ID et pas le NAME.
On encore : tu met onChange="javascript:return checkDate(this);"
et alors checkdate() devient un truc du genre :
Code :
- // 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 == 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( 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;
- }
- }
|
L'avantage avec cette fonction, c'est que si tu saisi '22 4 3' dans ton champs, il le formate automatiquement en 22/4/2003 !
@+ Message édité par Mara's dad le 22-04-2003 à 17:45:59 ---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
|