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

jQuery Discussion :

Déclencher un événement à la comparaison de deux dates


Sujet :

jQuery

  1. #1
    Membre régulier
    Inscrit en
    Avril 2010
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 257
    Points : 87
    Points
    87
    Par défaut Déclencher un événement à la comparaison de deux dates
    Bonjour,
    j'ai un soucis avec mon code javascript.
    en effet je veux afficher une alerte après la comparaison de 2 dates, alerte que j'ai stockée dans un DIV de ma page web.
    cependant je ne sais quel événement utiliser pour mon traitement vu que j'utilise des datepicker.
    je précise que j'utilise JQUERY. merci de votre aide !

    CODE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $(function(){
        $('#alertgarant').hide();
        var finperiode = $('input[name=fpriod]');
        var fingarantie = $('input[name=fgarant]');
        $('input[name=fgarant]').click(function(){
            if(fingarantie < finperiode){
                $('#alertgarant').show();
            }
        });
    });

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 952
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 952
    Points : 44 069
    Points
    44 069
    Par défaut
    Bonjour,
    j'ai du mal à comprendre ce que tu cherches comme embrouille ;), pourquoi ne pas faire simplement ton test et si il n'est pas satisfaisant alors tu affiches ton message.

  3. #3
    Membre régulier
    Inscrit en
    Avril 2010
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 257
    Points : 87
    Points
    87
    Par défaut
    effectivement peut être que mon précédent message ne le dit pas mais tous mes tests n'ont eu aucun succès !

  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 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 637
    Points : 66 656
    Points
    66 656
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var finperiode = $('input[name=fpriod]');
    var fingarantie = $('input[name=fgarant]');



    Il faut peut être comparer les values des inputs et pas et pas les objets inputs ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var finperiode = $('input[name=fpriod]').val();
    var fingarantie = $('input[name=fgarant]').val();
    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 régulier
    Inscrit en
    Avril 2010
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 257
    Points : 87
    Points
    87
    Par défaut
    effectivement avec les valeurs ça paraît plus logique, mais même avec cette modification rien ne fonctionne.
    je pense plus du côté de l’événement déclencheur à associer à un datepicker mais je ne sais pas lequel. ça serait peut être ça la solution.

  6. #6
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 404
    Points : 4 840
    Points
    4 840
    Par défaut
    il existe la fonction onSelect dans datepicker, je crois que c'est ce que tu cherches.
    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
     
    $(function() {
      var finperiode, fingarantie;
      $('#alertgarant').hide();
      $("input[type=text]").datepicker({
        dateFormat: "dd-m-yy",
        onSelect: function(dateText, inst) { 
        finperiode = $("input[name=fpriod]").datepicker().val();
        fingarantie = $("input[name=fgarant]").datepicker().val();
        if(finperiode !=""){//si la valeur de fpriod n'est pas vide.
          if (fingarantie < finperiode) {
            $('#alertgarant').show();
          } else {
            $('#alertgarant').hide();
          }
        }
        	console.log(dateText+" fpriod :"+finperiode);
        }
      });
     
    });

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

    +1 pour Toufik83

    sauf qu'il faut parser les dates au bon format :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    		var testevent_Date1	= $.datepicker.parseDate('DD dd MM yy', date1);
    		var testevent_Date2	= $.datepicker.parseDate('DD dd MM yy', date2);
    		if (testevent_Date1>testevent_Date2){
    ...
    A adapter en fonction du format d'affichage.
    (ex. Ici) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    		$("#idevent_Date1").datepicker({ 
    			dateFormat: 'DD dd MM yy',// de la forme : Vendredi 27 Janvier 2012 
    ...

  8. #8
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 404
    Points : 4 840
    Points
    4 840
    Par défaut
    merci pour les formats @jreaux62

  9. #9
    Membre régulier
    Inscrit en
    Avril 2010
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 257
    Points : 87
    Points
    87
    Par défaut
    Merci pour ces réponses, mais toujours pareil, dans mon debug j'ai l'erreur suivante :Uncaught TypeError: $(...).datepicker is not a function
    code :
    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
    $(function() {
        $('#alertgarant').hide();
        var finperiode = $.datepicker.parseDate('DD dd MM yy', $("input[name=fpriod]").datepicker().val());
        var fingarantie = $.datepicker.parseDate('DD dd MM yy', $("input[name=fgarant]").datepicker().val());
        $("input[type=text]").datepicker({
            dateFormat: 'DD dd MM yy',
            onSelect: function(dateText, inst) {
                if(finperiode !=""){//si la valeur de fpriod n'est pas vide.
                    if (fingarantie < finperiode) {
                        $('#alertgarant').show();
                    } else {
                        $('#alertgarant').hide();
                    }
                }
                console.log(dateText+" fpriod :"+finperiode);
            }
        });
     
    });

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

    Il faut mettre les éléments dans le bon ordre... :
    Code jQuery : 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
    $(function() {
      $('#alertgarant').hide();
     
      $("input[name=fpriod], input[name=fgarant]").datepicker({
     
        dateFormat: 'DD dd MM yy',
        onSelect: function(dateText, inst) {
          var finperiode = $("input[name=fpriod]").val();
          var fingarantie = $("input[name=fgarant]").val();
          $('#alertgarant').hide();
     
          if (finperiode != "" && fingarantie != "") {
            var date_finperiode = $.datepicker.parseDate('DD dd MM yy', finperiode);
            var date_fingarantie = $.datepicker.parseDate('DD dd MM yy', fingarantie);
            if (date_fingarantie < date_finperiode) {
              $('#alertgarant').show();
            }
          }
        }
      });
     
    });
    Dernière modification par Invité ; 13/10/2016 à 14h21.

  11. #11
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 404
    Points : 4 840
    Points
    4 840
    Par défaut
    bonjour,
    l'erreur que tu as dans la console veux dire que la fonction jQuery.datepicker n'existe pas, surement tu n'a pas importé le fichier js (jquery-ui).
    ta page doit ressembler a celle là :
    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
     
    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Document sans nom</title>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.css"/>
    <script src="https://code.jquery.com/jquery-3.1.1.min.js"   integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8="   crossorigin="anonymous"></script><!-- jQuery !-->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script><!-- le fichier jquery-ui ici !-->
    <script>
    	$(function() {
      var finperiode, fingarantie;
      $('#alertgarant').hide();
      $("input[type=text]").datepicker({
        dateFormat: /*"dd-m-yy"*/"DD dd MM yy",
        onSelect: function(dateText, inst) { 
        finperiode = $.datepicker.parseDate('DD dd MM yy', $("input[name=fpriod]").datepicker().val());
        fingarantie = $.datepicker.parseDate('DD dd MM yy', $("input[name=fgarant]").datepicker().val());
        if(finperiode !=""){//si la valeur de fpriod n'est pas vide.
          if (fingarantie < finperiode) {
            $('#alertgarant').show();
          } else {
            $('#alertgarant').hide();
          }
        }
        	console.log(dateText+" fpriod :"+finperiode);
        }
      });
     
    });
     
    </script>
    </head>
     
    <body>
    	<div id="alertgarant">Information sur le garant.</div>
    	<div>
        	F_Perdiode :<input type="text" name="fpriod" />
            F_Garant : <input type="text" name="fgarant"/>
        </div>
    </body>
    </html>

  12. #12
    Membre régulier
    Inscrit en
    Avril 2010
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 257
    Points : 87
    Points
    87
    Par défaut
    Effectivement je n'ai plus d'erreur dans mon debug , cependant rien ne fonctionne toujours même après des modifications qui m'ont donné le code suivant :
    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
    $(function() {
        $('#alertgarant').hide();
        var finperiode = $.datepicker.parseDate('dd/mm/YY', $("input[name=fpriod]").datepicker().val());
        var fingarantie = $.datepicker.parseDate('dd/mm/YY', $("input[name=fgarant]").datepicker().val());
        $("input[type=text]").datepicker({
            dateFormat: 'dd/mm/YY',
            onSelect: function(dateText, inst) {
                if(finperiode !=""){//si la valeur de fpriod n'est pas vide.
                    if (fingarantie < finperiode) {
                        $('#alertgarant').show();
                    } else {
                        $('#alertgarant').hide();
                    }
                }
                console.log(dateText+" fpriod :"+finperiode);
            }
        });
     
    });
    je ne vois pas trop non plus l'utilité du paramètre inst de la function
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onSelect: function(dateText, inst)

  13. #13
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 952
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 952
    Points : 44 069
    Points
    44 069
    Par défaut
    Citation Envoyé par saninx
    je ne vois pas trop non plus l'utilité du paramètre inst de la function onSelect: function(dateText, inst)
    Il serait peut être temps de regarder ce qu'en dit la documentation du plugin !

  14. #14
    Membre régulier
    Inscrit en
    Avril 2010
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 257
    Points : 87
    Points
    87
    Par défaut
    Finalement j'ai opté pour une autre manière qui sera de rendre impossible de sélectionner une date de garantie inférieur à la date de fin de période comme l'indique le code si dessous.
    cependant impossible d'effectuer maintenant un enregistrement avec mon submit, le navigateur tourne sans s’arrêter.
    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
    // Fonction de comparaison des dates
    $(document).ready(function(){
        $("input[name=fpriod]").datepicker({
            dateFormat: 'dd/mm/yy',
            numberOfMonths: 1,
            onSelect: function(selected) {
                $("input[name=fgarant]").datepicker("option","minDate", selected)
            }
        });
        $("input[name=fgarant]").datepicker({
            dateFormat: 'dd/mm/yy',
            numberOfMonths: 1,
            onSelect: function(selected) {
                $("input[name=fpriod]").datepicker("option","maxDate", selected)
            }
        });
    });

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

Discussions similaires

  1. [MySQL] comparaison de deux dates dans un ordre sql
    Par opeo dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 21/03/2007, 14h34
  2. comparaison de deux dates
    Par gloglo dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 16/01/2007, 13h39
  3. Comparaison entre deux dates dans une table
    Par Biskot75 dans le forum Access
    Réponses: 6
    Dernier message: 19/09/2006, 11h16
  4. comparaison de deux dates
    Par colombe dans le forum Bases de données
    Réponses: 4
    Dernier message: 13/07/2006, 18h44
  5. [VB6] Comparaison de deux dates dans une requête
    Par paradeofphp dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 07/06/2006, 19h45

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