IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Fonction vérifier syntaxe de date OK sur IE et KOs sur firefox


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 45
    Par défaut Fonction vérifier syntaxe de date OK sur IE et KOs sur firefox
    Bonjour,
    voila une finction qui vérifie la syntaxe d'une date que j'ai trouvé dans la faq
    et que j'ai modifié un peu le code
    la fonction marche bien sur ie mais pour fire fox non, il affiche des messages d'erreurs pour des dates valides


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    function CheckDate(idchamp,nomchamp) {
           var d=document.getElementById(idchamp).value;
          if(d=='')
          return true;
     
          var amin=1990; // année mini
          var amax=2020; // année maxi
          var separateur="-"; // separateur entre jour/mois/annee
          var j=(d.substring(8));
          var m=(d.substring(5,7));
          var a=(d.substring(0,4));
     
          var ok=1;
     
          if ( ((isNaN(j))||(j<1)||(j>31)) && (ok==1) ) {
             alert("Le jour du champ " + nomchamp +" n'est pas correct."); ok=0;
          }
     
          if ( ((isNaN(m))||(m<1)||(m>12)) && (ok==1) ) {
             alert("Le mois du champ " + nomchamp+" n'est pas correct."); ok=0;
          }
     
          if ( ((isNaN(a))||(a<amin)||(a>amax)) && (ok==1) ) {
             alert("L'année du champ " + nomchamp + " n'est pas correcte."); ok=0;
          }
     
          if ( ((d.substring(4,5)!=separateur)||(d.substring(7,8)!=separateur))
    	  	&& (ok==1) ) {
             alert("Les séparateurs du champ " + nomchamp + " doivent être des "+separateur); ok=0;
          }
     
          if (ok==1) {
             var d2=new Date(a,m-1,j);
             j2=d2.getDate();
             m2=d2.getMonth()+1;
             a2=d2.getYear();
             if (a2<=100) {a2=1900+a2}
             if ( (j!=j2)||(m!=m2)||(a!=a2) ) {
                alert("La date "+d+" n'existe pas !");
                ok=0;
             }
          }
          return (ok==1);
    }

  2. #2
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    bonjour,

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
          var j=(d.substring(8));
          var m=(d.substring(5,7));
          var a=(d.substring(0,4));
    substring retourne des chaînes de caractères pas des nombres Je suis d'ailleurs surpris que le code fonctionne sous IE.

    Essaye ceci :

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
          var j = parseInt(d.substring(8));
          var m = parseInt(d.substring(5,7));
          var a = parseInt(d.substring(0,4));

  3. #3
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 45
    Par défaut
    Bonjour,
    j'ai fait le changement mentionné mais le probléme reste pour des dates valides sous fire fo. Il affiche le message d'erreur suivant:
    la date machin n'existe pas

  4. #4
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    tu as oublié de déclarer les variables j2, m2, a2.
    De plus affiche a et a2, tu comprendras pourquoi le message s'affiche :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
          if (ok==1) {
             var d2=new Date(a,m-1,j);
             var j2=d2.getDate();
             var m2=d2.getMonth()+1;
             var a2=d2.getYear();
     
             if (a2<=100) {a2=1900+a2}
     
             if ( (j!=j2)||(m!=m2)||(a!=a2) ) {
                alert("La date "+d+" n'existe pas !");
                ok=0;
             }
          }
     
    alert(a2+" "+a);
    Pour l'année 2007 (sous Firefox 2):
    a = 2007 et a2 = 107, ce qui explique le message d'erreur.

    Il faut donc revoir ce test :
    Code javscript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (a2<=100) {a2=1900+a2}

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Vérifier syntaxe sur déclaration variable
    Par monlou dans le forum Langage
    Réponses: 3
    Dernier message: 13/06/2010, 19h48
  2. la date de création d'un fichier sur un site ftp??
    Par timsah dans le forum C++Builder
    Réponses: 5
    Dernier message: 15/01/2006, 21h27
  3. Comment vérifier qu'une date est nulle
    Par stressy dans le forum Access
    Réponses: 7
    Dernier message: 09/12/2005, 15h41
  4. Réponses: 4
    Dernier message: 15/09/2005, 13h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo