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 :

Mise à jour automatique d'un champs date


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 90
    Par défaut Mise à jour automatique d'un champs date
    Bonjour,

    Je souhaite formater automatiquement un champs de formulaire en sortie de zone mais j'y arrive pas...
    Le champs de saisi doit normalement contenir une date.
    Les formats acceptés pour le formatage automatique sont les suivants :
    JJMMYY
    JJ/MM/YY
    JJMMYYYY
    JJ/MM/YYYY

    Si la valeur saisie est dans un de ces quatre formats, je cherche à mettre à jour la zone avec la valeur JJ/MM/YYYY. Sinon, je laisse la saisie comme tel.

    Quelqu'un pourrait-il m'aider ?

    Merci.

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    tu as un debut de code ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 90
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    tu as un debut de code ?
    Oui... Le voici :
    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    function FormatDate(zone, d) {
    var separateur='/';	
    var ok=0;
    if (d.length == 6)
    {
    	var j=(d.substring(0,2));
    	var m=(d.substring(2,4));
    	var a=(d.substring(4));
    	ok=1;
    }
    else if (d.length == 8)
    {
    	if (d.substring(2,3) == separateur)
    	{
    		var j=(d.substring(0,2));
    		var m=(d.substring(3,5));
    		var a=(d.substring(6));
    		ok=1;	
    	}
    	else
    	{
    		var j=(d.substring(0,2));
    		var m=(d.substring(2,4));
    		var a=(d.substring(5));
    		ok=1;		
    	}
    }
    else if (d.length == 10)
    {
    	var j=(d.substring(0,2));
    	var m=(d.substring(3,5));
    	var a=(d.substring(6));
    	ok=1;	
    }
     
     
    if ( ((isNaN(j))||(j<1)||(j>31)) && (ok==1)) {ok=0;} 
    if ( ((isNaN(m))||(m<1)||(m>12)) && (ok==1)) {ok=0;}
    if ( isNaN(a) && (ok==1) ) {ok=0;} else {if (a < 100) {if (a < 10) a = (a + 2000); else a = (a + 1900);}}
    	zone.value = a;
    if (ok==1) {
      var d2=new Date(a,m-1,j);
      j2=d2.getDate();
      m2=d2.getMonth()+1;
      a2=d2.getFullYear();  
     
      if ( (j!=j2)||(m!=m2)||(a!=a2) ){ok=0;}  
      else
      	{zone.value = j2 + separateur + m2 + separateur + a2;
      		}
     }
     
    return ok;
    }
    Marche pas pour l'instant mais il doit pas manquer grand chose : je cherche plus a le faire fonctionner...
    Je préfèrerais gérer le problème avec les expressions régulière mais j'y comprends rien
    A moins que tu ne pense que ma 1ère direction est la bonne ?

    En tout cas merci de m'avoir répondu.

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    oulà ...
    mieux vaux passer par une bonne veille expession régulière ...
    tu ferait d'une pierre deux coup : le teste de foramt et la decomposition avec la même regExp
    je jette un oeil dessus demain

    la regExp donnerait ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ^(\d{2})/?(\d{2})/?(\d{2}\d{2}?)$
    après pour tester par rapport a ce pattern et manipuler l'expression je vois ça demain
    [edit] heu pas de backrefs ici ^^


    il faudra ensuite verifier en plus si il s'agit bien d'une date
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 90
    Par défaut
    Bonjour,

    Merci de ta réponse.
    Peux-tu me dire comment exploiter cette expression régulière ?
    Comment récupérer le jour, le mois et l'année ?

    Merci encore.

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    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
    <script type="text/javascript">
     
    regDate=new RegExp(/^(\d{2})\/?(\d{2})\/?(\d{2}\d{2}?)$/) ;
    function verif(){
    Chaine=document.getElementById('indate').value;
    alert(Chaine)
    if(!regDate.test(Chaine)){alert('format de date non reconnu !');
                              return false;
                              }
    else{ Chaine.match(regDate);
          formatDate=RegExp.$1+"/"+RegExp.$2+"/"+RegExp.$3;
          document.getElementById('outdate').innerHTML=formatDate;
          }
    }
    </script>
     
    </head>
     
    <body>
    <input type='text' id='indate' />
    <input type="button" onclick="verif()" value="check date" /><br />
    <span id="outdate"></span>
    </body>
    Attention cela ne vérifie que le format ! pas l'exactitude de la date !!
    on peut saisir 99/99/9999 !
    il faut coupler cela avec une autre vérifiaction verification dans le else
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

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

Discussions similaires

  1. Mise à jour automatique d'un champ date
    Par Latimer dans le forum jQuery
    Réponses: 12
    Dernier message: 26/05/2015, 13h28
  2. Mise à jour automatique d'un champ
    Par Destiny dans le forum Access
    Réponses: 1
    Dernier message: 20/08/2014, 09h45
  3. [AC-2000] Mise à jour automatique d'un champ dans une table
    Par Nerva dans le forum Access
    Réponses: 3
    Dernier message: 14/10/2010, 18h49
  4. Mise à jour automatique d'un champ
    Par supertoms dans le forum VBA Access
    Réponses: 1
    Dernier message: 16/05/2008, 18h26
  5. [Word 2000] Mise à jour automatique d'un champ
    Par texas2607 dans le forum Word
    Réponses: 12
    Dernier message: 13/09/2007, 12h23

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