Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Bibliothèques & Frameworks > jQuery
jQuery Forum d'entraide sur le framework jQuery. Avant de poster : Tutoriels jQuery, FAQ jQuery, Tous les tutoriels JavaScript, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/12/2011, 23h52   #1
Candidat au titre de Membre du Club
 
Inscription : novembre 2002
Messages : 46
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : novembre 2002
Messages : 46
Points : 14
Points : 14
Par défaut Multiples JSCalendar indépendants

Bonsoir et Joyeux Noël!

Je voudrais utiliser plusieurs JSCalendar sur un site web.
Un bout de code javascript (ci-dessous) permet d'ajouter dynamiquement un bloc contenant un champ de type 'input' pour la date et un autre de type 'input' pour le contenu. Entre les deux, un bouton permettant d'afficher le calendrier sous forme de popup et de pouvoir sélectionner la date.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<script type="text/javascript">
      var counter=1;
      $('.ajouter').click(function(){
         var newDetailBoxDiv = $(document.createElement('div')).attr("id", 'DetailBoxDiv' + counter);
         newDetailBoxDiv.html('<div class="date">' +
                              '	Date&nbsp;&nbsp;<input type="text" name="date" id="calendar-field[' + counter + ']" \/>' +
                              '	<button id="calendar-trigger[' + counter + ']">...<\/button>' +
                              '	<script>' +
                              '		Calendar.setup({inputField:"calendar-field[' + counter + ']",trigger:"calendar-trigger[' + counter + ']",onSelect   : function() { this.hide() }});' +
                              '	<\/script>' +
                              '<\/div>' +
                              '<div class="contenu">Contenu <input type="text" class="texte" name="contenu" \/><\/div>');
 
         newDetailBoxDiv.appendTo("#detail_programme");
	 counter++;
      });
</script>
Seulement voilà, seul le premier bloc (écrit en dur dans ma page php) fonctionne. Aucun des blocs suivants ajoutés dynamiquement ne fonctionnent. Lorsque je clique sur le bouton destiné à afficher le calendrier, ce dernier ne s'affiche pas et l'erreur javascript que j'ai est la suivante :Souriez-vous ce qu'il faut faire pour avoir de multiples JSCalendar indépendants ?
Merci
hsmr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/12/2011, 11h54   #2
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 072
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 072
Points : 45 202
Points : 45 202
Regarde plutot du coté de l'attribution d'evenements sur les objets créés dynamiquement => on() ou live()
__________________
Ma page 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


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2012, 02h27   #3
Candidat au titre de Membre du Club
 
Inscription : novembre 2002
Messages : 46
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : novembre 2002
Messages : 46
Points : 14
Points : 14
Bonsoir SpaceFrog!
Merci pour ta réponse. Je pense avoir saisi l'utilisation de "live".
J'ai donc remplacé le bout de code javascript
Code :
1
2
3
'<script>' +
'     Calendar.setup({inputField:"calendar-field[' + counter + ']",trigger:"calendar-trigger[' + counter + ']",onSelect   : function() { this.hide() }});' +
'<\/script>' +
par ceci
Code :
1
2
3
'<script>' +
'     $("button").live("click", "button", function() {Calendar.setup({inputField:"calendar-field[' + counter + ']",trigger:"calendar-trigger[' + counter + ']",onSelect   : function() { this.hide() }});})' +
'<\/script>' +
C'est presque ça, mais il faut que je clique 2 fois sur l'élément "button" pour que l'action désirée se fasse.
J'ai essayé de remplacer "live" par "on", mais j'ai le message d'erreur suivant dans la console java
Code :
$("button").on is not a function
Une piste supplémentaire serait la bienvenue. Merci.
hsmr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2012, 08h20   #4
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 072
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 072
Points : 45 202
Points : 45 202
Quelle version de jquery ??? on() est récent
__________________
Ma page 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


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2012, 11h33   #5
Candidat au titre de Membre du Club
 
Inscription : décembre 2010
Messages : 47
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 47
Points : 12
Points : 12
Sinon tu peux aussi te tourner vers la fonction delegate(), c'est ce que j'ai utilisé pour la génération de formulaires au clic (j'utilise des datepicker dans mes formulaires), et ça marche bien.
http://api.jquery.com/delegate/
Logarithmix est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h41.


 
 
 
 
Partenaires

Hébergement Web