Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources 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 12/04/2011, 16h43   #1
Candidat au titre de Membre du Club
 
Inscription : avril 2010
Messages : 26
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 26
Points : 10
Points : 10
Par défaut Bind click sur checkbox

Bonjour,

Je suis confronté à un problème particulier.

Je récupère des champs cachés, et attribue un onclick sur une checkbox en fonction des valeurs récupérées.
Quand j'affiche les id checkbox et les valeurs récupérées, tout va bien :
Citation:
id_checkbox valeur1 valeur2
ddcl-parametre_8358-i0 189 123
ddcl-parametre_8358-i1 189 123
ddcl-parametre_8358-i2 189 123
...
ddcl-parametre_8400-i0 194 124
ddcl-parametre_8400-i1 194 124
Les id sont uniques.

J'attribue mon onclick comme ceci :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$(document).ready(function(){
	$(".chpmult").each(function(){
		id_cbxmult = $(this).attr('id');
		id_valeur1 = parseInt($('#valeur1_'+id_cbxmult).val());
		id_valeur2 = parseInt($('#valeur2_'+id_cbxmult).val());
		$('#ddcl-'+id_cbxmult+'-ddw input:checkbox').each(function(){
			id_check = $(this).attr('id');
			console.log(id_check+' '+id_valeur1+' '+id_valeur2); // ok affichage
			document.getElementById(id_check).onclick = function () {
				modif_data(id_valeur1, this.checked, id_valeur2)
			}
		});
	});
});
En résumé je récupère des divs, les champs cachés (valeur1 et valeur2), les checkbox dans la div, et attribue mon onclick sur chaque checkbox.

Le problème est que chaque checkbox va se retrouver avec les mêmes valeurs (les dernières) ! Par exemple la première checkbox, je récupère 189 et 123 et il va attribuer au onclick les dernières 194 et 124 .

Impossible de comprendre pourquoi.

Je ne peux pas attribuer le onclick avec jquery car les checkbox sont générés avec un composant de jquery et il y a déjà un "bind".

J'ai donc l'impression qu'il attribue le onclick qu'à la fin (d'où les dernières valeurs), mais pourquoi ?

Merci d'avance.
scfi1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2011, 17h05   #2
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 806
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 806
Points : 35 803
Points : 35 803
C'est pourtant clairement expliqué dans la : Comment attribuer à des objets un onclick faisant appel à une variable de boucle ?
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2011, 17h09   #3
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 007
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 007
Points : 45 091
Points : 45 091
ça c'était avant jquery ....

=> .data()
__________________
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 déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2011, 17h13   #4
Candidat au titre de Membre du Club
 
Inscription : avril 2010
Messages : 26
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 26
Points : 10
Points : 10
Merci pour vos réponses,

Oui mais on ne rentre pas dans le cadre de la FAQ (enfin je pense), ce n'est pas une variable de boucle, mais une variable que je vais récupérer dans le HTML (qui certes change à chaque tour de boucle), l'indice n'est donc pas adapté (?).

SpaceFrog, le .data(), je ne voit pas très bien où je peux le placer.

Merci à vous,
scfi1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2011, 17h19   #5
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 007
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 007
Points : 45 091
Points : 45 091
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
$(document).ready(function(){
	$(".chpmult").each(function(){
		id_cbxmult = $(this).attr('id');
		$(this).data('id_valeur1',parseInt($('#valeur1_'+id_cbxmult).val()));
		$(this).dtata('id_valeur2',parseInt($('#valeur2_'+id_cbxmult).val()));
		$('#ddcl-'+id_cbxmult+'-ddw input:checkbox').each(function(){
			id_check = $(this).attr('id');
			document.getElementById(id_check).onclick = function () {
				modif_data($(this).data('id_valeur1'), this.checked, $(this).data('id_valeur2'))
			}
		});
	});
});
__________________
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 déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 13/04/2011, 09h51   #6
Candidat au titre de Membre du Club
 
Inscription : avril 2010
Messages : 26
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 26
Points : 10
Points : 10
Merci c'est exactement ça (en décalant juste les déclarations dans la boucle du dessous).

Très pratique cette fonction, je ne connaissais pas.
scfi1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h59.


 
 
 
 
Partenaires

Hébergement Web