Controle par javascript

Fermé
Manu - 10 sept. 2004 à 13:21
 Manu - 10 sept. 2004 à 13:51
Bonjour à tous les boss du javascript
Pas facile à manipuler ce langague !
J’essaye d’instaurer un contrôle lors de la saisie d’une date par l’utilisateur de mon site en ASP. Il faut que la date qu’il saisisse soit comprise entre deux dates stockées dans la page dans des variables vbscript.
Au niveau de ma page la partie concernée donne ceci :

<td>Date de la pièce : <input type="text" name="Date" size="12" tabindex="1" onblur="controledate('<%= datDebut%>', '<%= datFin%>', this.value);" > </td>

Avec datDebut et datFin sont stockés dans une base de donnée, puis récupérés dans une variable Session lors de la connexion au site et qui sont récupéré dans une variable locale au début de cette page. La récupération se fait bien, j’ai fait des test d’affichage et les valeurs sont bonnes.
datDebut et datFin sont de type String (j’ai essayé au format date, c’était pas mieux)

j’envois donc des données du type jj/mm/aaaa

La fonction controledate() est la suivante :

<SCRIPT LANGUAGE="javascript">
function controledate(debut, fin, reelle){
// On récupère les variables
var ddebut = debut;
var dfin = fin;
var dnow = reelle;

// Pour chacune des variables, on décompose en jj mm aaaa et on en fait une date
// on transforme cette date en nombre grace à la methode getTime afin de pouvoir (mieux?) la manipuler
var jnow = dnow.substring(0, 2);
var mnow = dnow.substring(3, 5);
var anow = dnow.substring(6,10);
var datnow = new Date(anow, mnow, jnow);
var nbrnow = datnow.getTime();

var jfin = dfin.substring(0, 2);
var mfin= dfin.substring(3, 5);
var afin= dfin.substring(6,10);
var datfin = new Date(afin, mfin, jfin);
var nbrfin = datfin.getTime();

var jdebut = ddebut.substring(0, 2);
var mdebut= ddebut.substring(3, 5);
var adebut= ddebut.substring(6,10);
var datdebut = new Date(adebut, mdebut, jdebut);
var nbrdebut = datdebut.getTime();


/*
alert(ddebut);
alert(dnow);
alert(datdebut);
alert(datnow);
alert(nbrdebut);
alert(nbrnow);
*/

if ( nbrdebut >= nbrnow || nbrfin <= nbrnow ) {
alert(La date doit être comprise dans l/'exercice en cours);
return false;}
}
</SCRIPT>

Lorsque je cache le if et que je laisse les alert apparant, tout va bien : j’ai des résultat qui me semble corrects.
Lorsque je fais comme c’est présenté ici, il ne se passe rien et j’ai un message d’erreur me disant :
Ligne : 58 (correspondant à la ligne var afin = dfin.substring(6,10);)
Car : 1
Erreur : objet attendu

Si une personne avait une solution à mon problème, je lui en serais très reconnaissant…
Ps : et que pensez vous du code, je trouve ça un peu lourd (devoir utiliser du substring, en faire une date, le mettre en nombre…) pour finalement faire quelque chose de pas si compliqué, est ce normal ?
Merci d’avance,
Manu
A voir également:

3 réponses

alert("La date doit être comprise dans l'exercice en cours");
ça n'irait pas mieux ?
0
Effectivement, ça m'avait echappé, mais ça ne marche malheureusement toujours pas...
0
Excuse, ça marche! j'ai rechargé plusieurs fois et c'est bon...
Merci beaucoup
0