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 :

Datepicker et methode beforeshow


Sujet :

jQuery

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 274
    Points : 114
    Points
    114
    Par défaut Datepicker et methode beforeshow
    Bonjour à tous, je viens vers vous car j'épprouve un soucis avec jquery ui datepicker.

    Le calendrier s'affiche bien, mais je n'arrive pas à utiliser le beforeShow, firebug me retourne le message : function statement requires a name

    Voici mon 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
    20
    21
     
     
    // Fonction qui me retourne le chiffre du mois affiché au lieu du nom
    function returnMonthPicker(){
        monthNames = new Array('Janvier','Février','Mars','Avril','Mai','Juin','Juillet','Août','Septembre','Octobre','Novembre','Décembre');
        for(i=0;i<=11;i++){ if($(".ui-datepicker-month").html() == monthNames[i]){ return (i+1); } }
    }
     
    // Envoi une requête ajax pour vérifier l'état du jour (1 = enable || 0 = disbale)
    function checkEtat(){
        $("#minLongPlan").find("td a").each(function(i){
            tmpy = $(".ui-datepicker-year").html(); // Année affiché
            tmpm = returnMonthPicker(); // Mois affiché
            tmpd = $(this).html(); // Jour
            tmpe = etatDay(tmpd,tmpm,tmpy); // Etat
            if(tmpe < 1){ $(this).parent().addClass("ui-state-disabled"); }
        });
    }
     
    $("#minLongPlan").datepicker({ beforeShow: checkEtat });
    // $("#minLongPlan").datepicker({ beforeShow: checkEtat() });
    et lorsque je test dans firefox j'obtient l'erreur :
    function statement requires a name

    Mon datepicker est directement afficher et n'est pas lier à un input, ma version jquery est : jquery-ui-1.8.14

    D'avance merci de votre aide

  2. #2
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 274
    Points : 114
    Points
    114
    Par défaut
    Re bonjour, alors j'ai vue la chose sous un autre angle

    Mon fichier php me retourne une chaîne JSON
    [ [jour,mois,année], [jour,mois,année], etc...]
    Toute ces date doivent-être désactiver

    Voici le nouveau code, defait plus court et plus contextuel je trouve

    Jquery
    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
     
    var date = new Date();
    y = date.getFullYear(); // Année 4 chiffre
    m = (date.getMonth()+1); // Mois (comme janvier vaut 0, j'ajoute 1)
    $.ajax({ url   : "monfichier.php", // Le fichier PHP
                data : "idCom="+rdv['idCom']+"&y="+y+"&m="+m, // Les paramètres
                dataType : "json", // Le format de retour
                success : function(tab){ // La fonction de succes
                    $("#minLongPlan").datepicker({
                           beforeShowDay: function(date){
                                for(i=0; i<tab.length; i++){
                                    if( m == tab[i][1] && y == tab[i][2] && (i+1) == tab[i][0] ){
                                        return [false, "ui-state-disabled","Pas OK"]; // On désactive
                                    }
                                    alert('OK');  // Aucun alert reçus comme si tout était désactiver
                                    return [true,'ui-state-default','OK']; // Activer
                                }
                            }
                     });
                 }
    });
    exemple pour décembre j'obtient le tableau json :
    [[1,12,2011],[2,12,2011],[3,12,2011],[4,12,2011],[6,12,2011],[8,12,2011],[10,12,2011],[11,12,2011],[13,12,2011],[15,12,2011],[17,12,2011],[18,12,2011],[20,12,2011],[22,12,2011],[24,12,2011],[27,12,2011],[29,12,2011],[31,12,2011]]

    Tout ces jours doivent être désactiver (on constate qu'en réalité il nous reste 5,7,9,12,14,16,19,21,23,25,26,30 qui doivent être activer)

    La condition pour changer la class semble correct
    Si le mois correspond, si l'année correspond et enfin si le jour correspond

    Malheureusement il me désactive tout, les jours sensé être activer ne le sont pas

    Donc voilà je sais pas si je m'exprime bien et si j'explique correctement le problème, donc n'hésiter pas à demander des précision si besoin

    d'avance merci de votre aide

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 274
    Points : 114
    Points
    114
    Par défaut
    Re bonjour à tous,

    je pense m'approcher du but, pour l'instant ca fonctionne à l'affichage, mon problème maintenant est que si je change de mois il ne prend pas en compte ceux des mois suivant et précédent

    En clair nous sommes le 11/12/2011 donc il m'affiche le calendrier de décembre 2011, il désactive bien les jours comme rechercher, mais si je fait suivant il ne va pas chercher les jours qu'ils faut désactiver pour ce moi là

    En clair ca fonctionne que pour le premier mois

    Voici le nouveau 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
    20
     
    // Retourne true si la date est présent dans le tableau
    function isDateInArray(arr,d,m,y){
        check = false;
        for(i=0;i<arr.length;i++){ if(d == arr[i][0] && (m+1) == arr[i][1] && y == arr[i][2]){ check = true; } }
        return check;
    }
     
    $.ajax({ url: "monfichier.php",
               data: "idCom="+rdv['idCom']+"&y="+y+"&m="+m,
               dataType: "json",
               success: function(tab){
                   $("#minLongPlan").datepicker({
                       beforeShowDay: function(date){
                           if(isDateInArray(tab,date.getDate(),date.getMonth(),date.getFullYear())){ return [false, "ui-state-disabled", "Fermer"]; }
                           return [true,"","OK"];
                       }
                   });
              }
    });
    Donc lors de l'affichage ca fonctionne les jours sensé être désactiver le sont, jusqu'a ce que je face suivant ou précédent

    Donc est-il possible de modifier celà ?

    d'avance merci de votre aide

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 274
    Points : 114
    Points
    114
    Par défaut
    Bonsoir,

    Résolu, je vais chercher tout les planings pour un élément via le php, sans le limiter à une année et un mois (bon c'est sûr mon json contient pas mal de date, mais c'est fonctionnel)

    ca aurait été préférable d'aller chercher les date mois par mois mais bon...

    Merci quand même.

  5. #5
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 122
    Points : 44 914
    Points
    44 914
    Par défaut
    ca aurait été préférable d'aller chercher les date mois par mois mais bon...
    sur le principe donc pourquoi ne pas faire la recherche des jours sur le changement du mois au clic sur les boutons précédant/suivant.

  6. #6
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Bonsoir

    C'est un peu tard, mais voici comment j'avais abordé le problème de la personnalisation des dates en 2009 : http://danielhagnoul.developpez.com/...datepicker.php, http://danielhagnoul.developpez.com/...er/exemple.php et http://danielhagnoul.developpez.com/...cker/bonus.php

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

Discussions similaires

  1. Jquery datepicker methode getdate()
    Par SPACHFR dans le forum jQuery
    Réponses: 1
    Dernier message: 29/09/2010, 17h08
  2. [debutant] [servlets] methode init()
    Par be_on_edge dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 01/03/2004, 15h11
  3. [METHODE] -> Détection de virus ?
    Par MaTHieU_ dans le forum C++Builder
    Réponses: 2
    Dernier message: 11/02/2004, 17h04
  4. Passage de variable par methode post ?
    Par oazar dans le forum Flash
    Réponses: 33
    Dernier message: 16/10/2003, 17h03
  5. Methode de drcherche a l,interieur de basse de donner texte
    Par philippe V dans le forum Autres SGBD
    Réponses: 4
    Dernier message: 03/12/2002, 10h20

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