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

JavaScript Discussion :

Bind click sur checkbox


Sujet :

JavaScript

  1. #1
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 42
    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 :
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, 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
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

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

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    ça c'était avant jquery ....

    => .data()
    Ma page Developpez - Mon Blog 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

    Venez sur le Chat de Développez !

  4. #4
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 42
    Par défaut
    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,

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

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

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 - Mon Blog 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

    Venez sur le Chat de Développez !

  6. #6
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 42
    Par défaut
    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.

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

Discussions similaires

  1. bind Click sur Listbox
    Par shaiHulud dans le forum Tkinter
    Réponses: 4
    Dernier message: 10/12/2013, 18h10
  2. [AC-2010] Evènement click sur CheckBox
    Par fanabullunet dans le forum IHM
    Réponses: 7
    Dernier message: 10/05/2012, 17h14
  3. Click sur checkbox
    Par titmael dans le forum jQuery
    Réponses: 5
    Dernier message: 28/11/2011, 09h42
  4. binding click sur une select multiple perso
    Par Setsuna_00 dans le forum jQuery
    Réponses: 3
    Dernier message: 29/07/2011, 14h31
  5. exécuter fonction php après click sur checkbox
    Par neismarspra dans le forum Langage
    Réponses: 1
    Dernier message: 24/11/2008, 23h44

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