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 24/10/2011, 16h45   #1
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
Par défaut Duplication de formulaires

Bonjour à tous.
Voici mon problème :
Je développe une application web où l'utilisateur peut générer un graphique (grâce à la librairie HighChart). Les critères de l'utilisateur sont filtrés par un formulaire incluant pas mal de plugin jquery. (Datepicker, slider...)
J'aimerais que l'utilisateur puisse dupliquer quelques fois ce formulaire afin de faire des comparaisons entre graphiques.
Pour le moment je réussi à dupliquer le formulaire "en dur", grâce à une classe formulaire que j'ai crée en PHP5, mais ça ne répond pas à ma demande.
Il faudrait que quand l'utilisateur clique sur "ajouter un autre formulaire", celui-ci se génère automatiquement (et donc que les instanciations jquery suivent derrière pour les plugins, ainsi que pour l'envoi des variables entrées vers la BDD).
Car avec ma classe php, je créer les formulaires en dur, du genre :
Code :
1
2
$formulaire1 = new Formulaire();
$formulaire2 = new Formulaire();
Ensuite je cache le formulaire2, et le bouton "ajouter un formulaire" fait simplement un .show sur le div du formulaire2...
Et au niveau de mes instanciations et tests jquery c'est la pagaille, car je dois dupliquer mes tests à l'avance selon le nombre de formulaires dans ma page.

Une solution ?
Logarithmix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2011, 19h08   #2
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 944
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 944
Points : 4 776
Points : 4 776
Bonjour,
as tu regardé du coté du clonage ?
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/10/2011, 09h18   #3
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
Oui mais le clonage ne répond pas à ma création d'instances de plugin et de variables dynamiques...:S
Logarithmix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/10/2011, 14h37   #4
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
Après quelques essais, le clonage marche en parti pour mon formulaire.
Malheureusement les instanciations des pluggins ne suivent pas tous.
Je m'explique, j'utilise le plugin selectToUISlider. Quand je clone mon formulaire, l'instanciation de ce plugin se clone également (car j'ai mis clone(true)).
Donc je me retrouve avec 2 sliders dans le formulaire cloné. Un qui controle le slider du formulaire d'origine, et un qui est bien instancié pour le formulaire cloné.
Je n'arrive pas à enlever celui qui controle le formulaire d'origine, et je n'ai pas trouvé de destructeur dans les fonctions du plugin...
Pour Datepicker, j'avais sensiblement le même problème, que j'ai pu régler comme suit :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
	clone.find( '#from'+cptform+', #to'+cptform).removeClass('hasDatepicker').removeData('datepicker').unbind().datepicker({
										defaultDate: "+1w",
										changeMonth: true,
										numberOfMonths: 3,
										onSelect: function( selectedDate ) {
											var option = this.id == ("from"+cptform) ? "minDate" : "maxDate",
												instance = $( this ).data( "datepicker" ),
												date = $.datepicker.parseDate(
													instance.settings.dateFormat ||
													$.datepicker._defaults.dateFormat,
													selectedDate, instance.settings );
											//dates.not( this ).datepicker( "option", option, date );
										}
									});
En gros je détruit l'event et je le remplace par un nouveau.
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 12h01.


 
 
 
 
Partenaires

Hébergement Web