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 :

type = "date" et fonctions


Sujet :

JavaScript

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 262
    Points : 121
    Points
    121
    Par défaut type = "date" et fonctions
    Bonjour,

    je cherche à partir d'une saisie de date

    1. A extraire l'année afin de l'affecter dans un champ "catégorie". je ne sais pas si le code est propre mais j'y suis arrivé (si cela peut aider un novice comme moi).

    Code html : 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
    <!DOCTYPE html>
    <html>
    <head>
    	<meta charset="UTF-8">
    	<title> DATES </title>
    </head>
    <body>
     
    <form action="" method="--">
     
    			<p> date de naissance : <input type="date" name="dateN" id="dateN" onchange="recup()"></p>
     
    						<script type="text/javascript">
                                                                    
                                                                    function recup()
                                                                    {
                                                                            var $date = document.getElementById('dateN').value;  
                                                                            var $sub_date = $date.substring(0,4);  
                                                                            document.getElementById("dest").value=$sub_date;
                                                                    }
                                                    </script>
     
     
     
     
    			<p> catégorie :<input type="text" name="dest" id="dest" readonly=""></p>  
     
    </form>
    </body>
    </html>

    en revanche, après de nombreuses recherches, je n'arrive pas à faire marcher mon code sur le calcul du nombre de mois. Je n'arrive pas à "définir" la date (une variable?)

    Erreur dans:
    Citation Envoyé par console.log
    Uncaught ReferenceError: date is not defined
    at nbre_de_mois (MOIS.html:19)
    at HTMLInputElement.onchange (MOIS.html:11)
    Code html : 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
    <!DOCTYPE html>
    <html>
    <head>
    	<meta charset="UTF-8">
    	<title> DATES </title>
    </head>
    <body>
     
    <form action="" method="--">
     
    			<p> date de naissance : <input type="date" name="dateN" id="dateN"  onchange="nbre_de_mois()"></p>
     
    						<script type="text/javascript">
                                                                    
                                                                            function nbre_de_mois()
                                                                    {
     
                                                                            var $dateNaiss = document.getElementById('dateN').value;                        
                                                                            var $datetoday = date("Y-m-d");
     
                                                                            $sdateNaiss = strtotime($dateNaiss);
                                                                            $datetoday = strtotime($datetoday);
     
                                                                            $diff_datetoday_dateNaiss = $datetoday - $dateNaiss;
     
                                                                            $nbremois = $diff_datetoday_dateNaiss/2628000; 
     
                                                                            document.getElementById("nbre_Mois").value=$nbremois;
                                                                    }
     
                                                    </script>
     
     
    			<p> catégorie :<input type="text" name="nbre_Mois" id="nbre_Mois" readonly=""></p>  
     
     
    </form>
    </body>
    </html>


    Merci pour vos explications (ou un code qui marche pour l'analyser) bien utiles à ma progression.

    j'aimerai un arrondi sur le nombre de mois

    Et savoir après si je peux à partir de 2 onchange dans le même input faire appel aux deux fonctions recup() et nbre_de_mois() ? est-ce possible ou comment faire ?

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <p> date de naissance : <input type="date" name="dateN" id="dateN" onchange="nbre_de_mois()"  onchange="nbre_de_mois()"></p>

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 356
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 356
    Points : 15 702
    Points
    15 702
    Par défaut
    les fonctions "strtotime" et "date" sont des fonction PHP et non JavaScript.

    pour calculer la différence en mois, vous pouvez essayer cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var $dateNaissance = document.getElementById('dateN').valueAsNumber;
    var aujourdhui = (new Date()).getTime();
     
    var difference = aujourdhui - $dateNaissance;
    var differenceMois = difference / 2628000000;
    par contre le nombre de jour (30,42...) est une moyenne sur plusieurs années donc il peut y a avoir des imprécisions à quelques jours près. cela ne vous dérange pas ?

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 262
    Points : 121
    Points
    121
    Par défaut
    Bonjour

    Evidemment, je serai plus attentif dans mes prochaines recherches...merci le code marche très bien.

    j'ai en effet fait une moyenne mais cela n'a que très peu d'importance pour mes données

    Un grand merci

    En revanche, j'ai tenté de mettre 2 appels de fonction sur "onchange" et bien sur cela ne marche pas.

    J'ai contourné le pb en faisant un appel de fonction sur "onchange" et un appel de fonction sur "onblur".

    Je ne sais pas si cela est une bonne pratique ou si il y a une autre manière ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <.... onchange="fonction1(); fonction2();" ....>

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 262
    Points : 121
    Points
    121
    Par défaut
    merci pour vos aides

    tout marche TB et grâce à vos explications je continue à progresser .... même j'en suis qu'au début de mes galères...

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

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