Probleme IE / FIREFOX

Eléphant du PHP | 54 Messages

21 mars 2007, 11:37

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:

Mammouth du PHP | 1511 Messages

21 mars 2007, 14:16

Quelle est l'erreur affichée dans la console d'erreur javascript ?

Eléphant du PHP | 54 Messages

21 mars 2007, 15:11

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

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

21 mars 2007, 15:27

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
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphant du PHP | 54 Messages

21 mars 2007, 17:01

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 :(

Eléphant du PHP | 54 Messages

22 mars 2007, 10:49

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 :)