Page 1 sur 1

Probleme IE / FIREFOX

Posté : 21 mars 2007, 11:37
par Dexion
Bonjour,

J'ai un probleme avec un contrôle de mon formulaire, celui ci marche parfaitement sous IE mais absolument pas sous FireFox,

Code : Tout sélectionner

// Delai en millisecondes var DelaiMini = 5*(24*60*60)*1000; //-- Recup est init date arrivee var szDate = document.getElementById('date_arrivee').value; var D_Today = new Date(); var D_Date = getDate(szDate); var diff = (D_Date - D_Today)/(24*(60*60)*1000); D_Date.setDate( D_Date.getDate()-4); //-- Test sur delai if(diff <=5) { alert( "Date incorrect ou delai non respecté"); return false; }
Si quelqu'un aurais une idée du problème ! Merci d'avance :wink:

Posté : 21 mars 2007, 14:16
par momox
Quelle est l'erreur affichée dans la console d'erreur javascript ?

Posté : 21 mars 2007, 15:11
par Dexion
Bah en faite il y a aucune erreurs...

Il valide mon formulaire alors qu'il y a encore des controles à faire derière sur des autres champs

Posté : 21 mars 2007, 15:27
par sadeq
D'abord je n'ai pas une vue claire de l'objectif de ta verif car tu n'a pas expliqué la règle de validation.

Mais, je peux dire que même IE ne peut comprendre le "getDate(...)" que tu utilise comme convertisseur de dates.

Ecrite toute seule "getDate" est interprétée comme une fonction du langage alors que c'est une méthode de la classe Date qui retourne simplement le jour (numérique) de la date.
Pour convertir une valeur de date en un objet date, il faut instancier la classe Date([valeurIniDate]) en lui passant la valeur initiale d'une date.

Exemple: var ma_date = new Date("03/21/2007") pour créer un objet date ayant comme valeur initiale le 21 mars 2007.

NB. le format de la date doit être mois/jour/année

Voici une reprise de ton code, qui, pour moi, décide si une date saisie, au format mm/jj/aaaa, est refusée quand elle n'est pas supérieure de 5 jours à la date d'aujourd'hui.

Ce qui veut dire que :
si (date_arrivee - date aujourd'hui) <= 5 alors date refusée

Code : Tout sélectionner

<script> function verif() { // Delai en millisecondes var DelaiMini = 5*(24*60*60)*1000; //variable non utilisée dans ce cas //-- Recup est init date arrivee var szDate = document.getElementById('date_arrivee').value; //Convertir la date saisie en objet Date var D_Date = new Date(szDate); //Obtenir la date d'aujourd'hui var D_Today = new Date(); //Différence var diff = (D_Date - D_Today)/(24*(60*60)*1000); //Débug //alert ("D_Today=" + D_Today + "\nD_Date=" + D_Date + "\nDiff=" + diff); D_Date.setDate(D_Date.getDate()-4); //je ne sais pas pourquoi tu retires 4 jours de la date saisie //Débug //alert ("D_Date=" + D_Date); //-- Test sur delai if(diff <=5) //la date saisie doit être > de 5 jours à aujourd'hui { alert( "Date incorrect ou delai non respecté"); return false; } //else alert ("Ok"); //Débug } </script> <input id="date_arrivee">(mm/jj/aaaa) <input type="button" value="ok" onClick="verif();">
Note: Ce qui est marqué //Débug sert simplement pour tester le programme. Pour effectuer le test enlever les // au début de la ligne

Posté : 21 mars 2007, 17:01
par Dexion
Merci de m'aider :wink:

Mais sa ne résoud pas mon probleme, je peux te montrer les debug qu'il affiche si sa peux t'aider :

Code : Tout sélectionner

//Débug alert ("D_Today=" + D_Today + "\nD_Date=" + D_Date + "\nDiff=" + diff);
Il affiche :
D_Today=Wed Mar 21 15:55:13 UTC+0100 2007
D_Date=NaN
Diff=NaN

Code : Tout sélectionner

//Débug alert ("D_Date=" + D_Date);
Il affiche :
D_Date=NaN

Code : Tout sélectionner

else alert ("Ok"); //Débug
Il affiche :
Ok

( sa c'est si je ne remplis rien dans mon champ, si je le remplis j'ai bien l'affichage des deux dates, de la différence etc... )

Par contre sous FF, toujours le même problème, si je n'ai rien entrer dans mon champs date il valide quand meme le formulaire

Meme avec un :

Code : Tout sélectionner

if (document.form.date_arrivee.value == "") { alert("Veuillez choisir un date !"); return false; }
Donc je vois vraiment pas :(

Posté : 22 mars 2007, 10:49
par Dexion
Bon bah en faite c'étais une erreur a la *bip*

a cause de :

Code : Tout sélectionner

<input type="text" name="date_arrivee" size="10" readonly="readonly" />
IE à l'air de comprendre le getElementById alors que pour FF.

il faller rajouter :

Code : Tout sélectionner

<input type="text" name="date_arrivee" size="10" readonly="readonly" id="date_arrivee" />
Voilou et du coup tous marchouille bien :)