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 :

Gestion multiple de plage de jour avec les datepicker


Sujet :

jQuery

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 143
    Points : 43
    Points
    43
    Par défaut Gestion multiple de plage de jour avec les datepicker
    Bonjour,

    J'ai créer un datepicker pour pouvoir l'utiliser afin de faire des plages de date, donc pour ça je l'appel 2 fois avec la class ".datepicker" que j'ai créer et des id différent "dated" et "datef".

    Voici un exemple :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Du <INPUT type=text class=datepicker name=dated  id=dated>
    Au <INPUT type=text class=datepicker name=dated2  id=dated2>

    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
    17
    18
    19
    20
    21
    22
    $( ".datepicker" ).datepicker({
    			showOn: "button",
    			buttonText: "Selectionner une date",
    			buttonImage: "/weliteimages/calendrier.gif",
    			buttonImageOnly: true,
    			changeMonth: true,
    			changeYear: true,
    			showWeek: true
    		});
    		$( ".ui-datepicker" ).css("font-size", "10px");
     
    /* Permet d'eviter de mettre n'importe quel date */
    $("#dated").datepicker('option','onSelect',function() {
    			$("#datef").datepicker('option','minDate',
    			  new Date($(this).datepicker('getDate').getTime()+86400000)
    			);
    		});
    		$("#datef").datepicker('option','onSelect',function() {
    			$("#dated").datepicker('option','maxDate',
    			  new Date($(this).datepicker('getDate').getTime()-86400000)
    			);
    		});

    Voilà en gros le résultat donne ça :
    Nom : plage11.JPG
Affichages : 510
Taille : 12,3 KoNom : plage22.JPG
Affichages : 534
Taille : 12,7 Ko

    En gros cela permet d'éviter de mettre n'importe quel date pour la plage de date.

    Cependant quand je souhaite faire une deuxième plage sur la même page il me suffit simplement de dupliquer le code avec les nouveaux id. Mais dupliquer j'aime pas et ce que je souhaite faire c'est ça :

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $("#dated, #dated2, #dated3").datepicker('option','onSelect',function() {
    			$("#datef, #datef2, #datef3").datepicker('option','minDate',
    			  new Date($(this).datepicker('getDate').getTime()+86400000)
    			);
    		});
    		$("#datef, #datef2, #datef3").datepicker('option','onSelect',function() {
    			$("#dated, #dated2, #dated3").datepicker('option','maxDate',
    			  new Date($(this).datepicker('getDate').getTime()-86400000)
    			);
    		});

    Mais sa ne marche pas, enfin pas correctement. En gros la contrainte n'arrive pas à clairement différencier les 3 plages (dated/datef, dated2/datef2 et dated3/datef3) sans les mélanger.

    Nom : plage1.JPG
Affichages : 517
Taille : 13,3 KoNom : plagebug.JPG
Affichages : 501
Taille : 12,9 Ko

    Donc comme on peut le voir le premier datepicker de la deuxième plage à la contrainte du deuxième datepicker de la première plage.

    Je suppose que sa doit être tout bêtement par rapport au sélecteur css mais je vois pas comment,

    Si vous avez une idée je suis preneur

  2. #2
    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 937
    Points
    22 937
    Billets dans le blog
    125
    Par défaut
    Bonsoir

    Exemple :

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <div>
    	Du <input type="text" class="datepicker" id="dated10"> &nbsp; Au <input type="text" class="datepicker" id="datef10">
    </div>
    <div>
    	Du <input type="text" class="datepicker" id="dated20"> &nbsp; Au <input type="text" class="datepicker" id="datef20">
    </div>
    <div>
    	Du <input type="text" class="datepicker" id="dated30"> &nbsp; Au <input type="text" class="datepicker" id="datef30">
    </div>

    Code JS : 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
    	$.datepicker.setDefaults( $.datepicker.regional[ "fr" ] );
     
    	$( ".datepicker" ).datepicker({
    		"showOn" : "button",
    		"buttonImage" : "http://danielhagnoul.developpez.com/images/calendar.gif",
    		"buttonImageOnly" : true,
            "showWeeks" : true,
            "changeMonth" : true,
            "changeYear" : true,
            "showButtonPanel" : true,
            "minDate" : "-0j",
            "onSelect" : function( dateStr, ObjPicker ){
            	// this est l'input
            	// debug
                // console.log( this.id, " : ", dateStr );
            }
    	});
     
    	$( "[id^='dated']" ).datepicker( 'option', 'onSelect', function(){
    		// debug
    		// console.log( "onSelect", this.id );
     
    		$( "#datef" + this.id.slice( -2 ) ).datepicker( 'option', 'minDate', new Date( $( this ).datepicker( 'getDate' ).getTime() + 86400000 ) );
    	});
     
    	$( "[id^='datef']" ).datepicker( 'option', 'onSelect', function(){
    		// debug
    		// console.log( "onSelect", this.id );
     
    		$( "#dated" + this.id.slice( -2 ) ).datepicker( 'option', 'maxDate', new Date( $( this ).datepicker( 'getDate' ).getTime() - 86400000 ) );
    	});

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 143
    Points : 43
    Points
    43
    Par défaut
    Génial, merci ça marche niquel

    J'en apprend tout les jours avec jQuery

    Donc en gros si je comprends bien le fonctionnement :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    $( "[id^='dated']" )
    Et
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    $( "#datef" + this.id.slice( -1 ) )

    Permet d'appliquer la contrainte sur tout les id qui commence par "dated" et "datef".
    J'ai du mettre le slice à -1 car mes id dans le programme commençaient par 1,2,3....

    Par contre le slice ne marchera plus correctement si mes id continu dans les dizaines non ?

  4. #4
    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 937
    Points
    22 937
    Billets dans le blog
    125
    Par défaut
    Citation Envoyé par Nico1131 Voir le message
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    $( "[id^='dated']" )
    Et
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    $( "#datef" + this.id.slice( -1 ) )

    Permet d'appliquer la contrainte sur tout les id qui commence par "dated" et "datef".
    Oui pour dated ! Mais "#datef" + this.id.slice( -1 ) est uniquement le datefXY qui correspond au datedXY.

    Citation Envoyé par Nico1131 Voir le message
    Par contre le slice ne marchera plus correctement si mes id continu dans les dizaines non ?
    Oui ! C'est la raison pour laquelle il faut numéroter de 10 à 99.

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 143
    Points : 43
    Points
    43
    Par défaut
    Ok, merci pour toutes tes explications

    Je vais suivre ton conseil.

    Du coup je pense que mon sujet est résolu, donc je vais le clore

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 28/10/2006, 16h47
  2. Mise à jour avec les datasetproviders
    Par kafui dans le forum Bases de données
    Réponses: 2
    Dernier message: 23/06/2006, 15h25
  3. [Dates] Gestion d'un calendrier avec les jours fériés
    Par maximenet dans le forum Langage
    Réponses: 4
    Dernier message: 05/05/2006, 09h41
  4. [VB6]Prob avec les requêtes multiples
    Par cammipascal dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 30/03/2004, 19h46

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