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 :

Jquery, datepicker et .append


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3
    Par défaut Jquery, datepicker et .append
    Bonjour à tous,

    Je souhaite utiliser plusieurs 'datepicker' dans un formulaire HTML afin de calculer une durée en jours. Ce formulaire contient au départ une ligne avec deux champs pour la saisie des dates et un pour afficher le résultat. Un bouton propose à l'utilisateur de rajouter un nouvelle ligne pour une nouvelle saisie.
    Cette nouvelle ligne est créée par une fonction utilisant la méthode append de JQuery.

    Elle s'affiche correctement, mais le datepicker ne fonctionne pas sur les nouveaux champs de saisie des dates.

    Merci par avance pour votre aide.

    Le code HTML

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <form id="saisieDeclarations">
    Début :
        <input type="text" class="datepicker" id="dateDebut" name="dateDebut" />
    Fin :
        <input type="text" class="datepicker" id="dateFin" name="dateFin" />
        <br /><br />
        <input type="text" name="nbr" id="nbr" />
        <br /><br />
        <table>
            <tr id="ajoutLigne"></tr>
        </table>
        <input type="button" value="Ajouter" onclick="ajoutLigne()" />
    </form><br>...<br><script>var compteur=1;</script><br>

    Le code JS (ajout de la ligne)

    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
    function ajoutLigne(){
     
            compteur = compteur + 1;
     
        // Ajout de la nouvelle ligne du formulaire
     
            var new_element = '<td><input type="text" class="datepicker" id="datepickerD'+compteur+'" name="dateDebut'+compteur+'" required="required" /></td>';
            new_element = new_element+'"<td><input type="text" class="datepicker" id="datepickerF'+compteur+'" name="dateFin'+compteur+'" required="required" /></td>"';
            new_element = new_element+'<td><input type="text" name="nbr'+compteur+'" pattern="[0-9]{0,4}" placeholder="0000" value = "0" /></td>';
     
            $('#ajoutLigne').append(new_element);
     
            // Déplacement de l'id d'insertion
     
            $('tr[id="ajoutLigne"]').after('<tr id="ajoutLigne2"></tr>');
            $('tr[id="ajoutLigne"]').removeAttr('id');
            $('tr[id="ajoutLigne2"]').attr('id','ajoutLigne');
    }
    Le code JS (datepicker)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    	jQuery(function($){
     
        $.datepicker.setDefaults( $.datepicker.regional['fr'] );
        $('input').filter('.datepicker').datepicker({
            dateFormat: 'yy-mm-dd',
            minDate : 0,
            onSelect : function(date){ 
                            document.forms['saisieDeclarations'].elements['nbr'].value = soustraitDates();
                        }
        });
    });

  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
    Billets dans le blog
    125
    Par défaut
    Bonsoir

    Ce problème a déjà été traité plus d'une fois sur ce forum. Il faut détruire et reconstruire le UI Datepicker.

    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
    <form id="saisieDeclarations">
    Début :
        <input type="text" class="datepicker" id="dateDebut" name="dateDebut" />
    Fin :
        <input type="text" class="datepicker" id="dateFin" name="dateFin" />
        <br /><br />
        <input type="text" name="nbr" id="nbr" />
        <br /><br />
     
        <table>
            <tr id="ajoutLigne">
     
            </tr>
        </table>
     
        <input id="btnAjoutLigne" type="button" value="Ajouter une ligne" />
     
    </form>

    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
    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
    $( function(){
     
        $.datepicker.setDefaults( $.datepicker.regional['fr'] );
     
        var compteur = 1,
        	ObjDatepickerOptions = {
    			"minDate" : "-26d",
    			"maxDate" : "+1m +1w",
    			"dateFormat" : 'yy-mm-dd'
        	};
     
        $( "input.datepicker" ).datepicker( ObjDatepickerOptions );
     
    	function ajoutLigne(){
    		compteur++;
     
    		var jObj = $( "#ajoutLigne" ),
    			jObjTbody = jObj.parent();
     
    		// Ajout de la nouvelle ligne du formulaire
     
            var new_element = '<tr><td>' +
    	        	'<input type="text" class="datepicker" id="datepickerD' + 
    	        	compteur + 
    	        	'" name="dateDebut' + 
    	        	compteur + 
    	        	'" required="required" />' +
            	'</td><td>' +
            		'<input type="text" class="datepicker" id="datepickerF' + 
            		compteur + 
            		'" name="dateFin' + 
            		compteur + 
            		'" required="required" />' +
            	'</td><td>' + 
            		'<input type="text" name="nbr' + 
            		compteur + 
            		'" pattern="[0-9]{0,4}" placeholder="0000" value = "0" />' + 
            	'</td></tr>';
     
            jObjTbody
            	.append( new_element )
            	.append( jObj );
        }
     
        $( "#btnAjoutLigne" ).on( "click", function(){
        	 ajoutLigne();
     
        	$( "input.hasDatepicker" ).datepicker( "destroy");
     
        	$( "input.datepicker" ).datepicker( ObjDatepickerOptions );
     
        });
     
    });

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3
    Par défaut
    Bonjour,

    et merci pour cette réponse. Une épine en moins dès que je l'aurai appliquée. La prochaine fois en tous cas j'essaierai de mieux lire le forum, car je n'ai pas trouvé les discussions traitant de ce problème.

  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
    Billets dans le blog
    125
    Par défaut
    Bonjour

    Citation Envoyé par plucas29 Voir le message
    [...] La prochaine fois en tous cas j'essaierai de mieux lire le forum, car je n'ai pas trouvé les discussions traitant de ce problème.
    Plus le forum grossit, moins c'est évident.

    Il fut une époque où comme modérateur je modifiais presque tous les titres pour qu'ils respectent un format commun et qu'ils soient mieux en accord avec le sujet traité, mais c'est déjà très loin.

    Aujourd'hui, je suis obligé d'utiliser systématiquement l'outil recherche avancé pour simplement retrouver une de mes réponses ou un de mes codes et je n'y réussis pas toujours.

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

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

Discussions similaires

  1. [ZF 1.11] JQuery Datepicker et DateRange
    Par Kai231 dans le forum Zend Framework
    Réponses: 0
    Dernier message: 24/05/2011, 14h03
  2. "inst is undefined" pb jQuery datepicker
    Par aurelien12000 dans le forum jQuery
    Réponses: 0
    Dernier message: 31/01/2011, 17h54
  3. Jquery datepicker methode getdate()
    Par SPACHFR dans le forum jQuery
    Réponses: 1
    Dernier message: 29/09/2010, 17h08
  4. [jQuery - DatePicker] Integration ratée
    Par lifty dans le forum jQuery
    Réponses: 1
    Dernier message: 08/07/2009, 17h00
  5. [jQuery] Datepicker: dates désactivé
    Par Spir dans le forum jQuery
    Réponses: 1
    Dernier message: 28/09/2008, 16h04

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