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 :

Détecter un événement sur un input checkbox construit dynamiquement


Sujet :

jQuery

  1. #1
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Par défaut Détecter un événement sur un input checkbox construit dynamiquement
    Bonjour,

    Dans un formulaire d'insertion de photos, je donne la possibilité d'ajouter dynamiquement de nouvelles photos. Chaque photo est liée à un input de type checkbox pour indiquer si la photo est ou non la photo principale. Comme il ne peut y avoir qu'une seule photo principale, je désire décocher les cases à cocher autres que celle qu'on vient de cocher.

    J'ai donc le Jquery suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    //Unchecking mainPhoto when a checkbox is checked to have only one main photo
    //$('input[type="checkbox"]').change(function(event)  
    $('body').on( 'change', 'input[type="checkbox"]',function() 
    {
     
        if ($(this).is(':checked')) 
        {
     
            $('input[type="checkbox"]').removeAttr('checked');
     
        } 
     
    });
    Cela fonctionne bien si les photos pré-existaient (si les inputs ont été chargés lors du chargement de la page), mais ça ne fonctionne pas si la photo a été créée dynamiquement (après le chargement de la page). Ni la solution commentée dans le code précédent ni celle non commentée ne fonctionnent.

    Quelqu'un aurait une idée sur la manière de procéder?

    Merci d'avance pour votre aide.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1- il manque :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $(function(){ // équivalent à : $(document).ready(function() {
    ...
    });
    2- Un seul choix -> <input type="radio" ... />.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Par défaut
    Bonjour et merci pour ton aide..

    J'ai fait 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
    15
    16
     
    $(function(){ // équivalent à : $(document).ready(function() {
        //Unchecking mainPhoto when a checkbox is checked to have only one main photo
        //$('input[type="checkbox"]').change(function(event)  
        $('body').on( 'change', 'input[type="checkbox"]',function() 
        {
     
            if ($(this).is(':checked')) 
            {
     
                $('input[type="checkbox"]').removeAttr('checked');
     
            } 
     
        });
    });
    Malheureusement, ça ne change rien.

    Cependant, je n'ai pas compris ce que tu voulais dire au point 2 :
    2- Un seul choix -> <input type="radio" ... />.

  4. #4
    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
    Tu peux avoir plusieurs checkbox cochées en même temps.
    Par contre si tu utilises des bouton radios de même name, tu ne pourras en avoir qu'un seul coché à la fois.
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <input type="radio" name="foo" value="1" />
    <input type="radio" name="foo" value="2" />
    <input type="radio" name="foo" value="3" />
    <input type="radio" name="foo" value="4" />
    <input type="radio" name="foo" value="5" />

    Sinon avec des checkboxes créés dynamiquement: https://jsfiddle.net/ba1ox50s/1/
    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 !

  5. #5
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Par défaut
    Merci beaucoup à vous deux. Voici comment, avec votre aide, j'ai pu résoudre mon problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $('body').on('click','input[type="checkbox"]',function()
    {
     
        if ($(this).is(':checked')) 
        {
     
            $('input[type="checkbox"]').not($(this)).prop('checked',false);
     
        }
     
    });

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

Discussions similaires

  1. [Toutes versions] détecter l'événement sur insertion/suppression/renommer de feuille
    Par batou22003 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 23/09/2009, 15h43
  2. Détecter évènement sur boîte de dialogue automatique
    Par BnA dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 09/02/2009, 17h59
  3. Réponses: 4
    Dernier message: 03/02/2009, 15h42
  4. Détecter un événement sur une table Access
    Par Fred 57220 dans le forum Bases de données
    Réponses: 0
    Dernier message: 08/06/2008, 20h36
  5. Comment attribuer un name à un input checkbox en dynamique
    Par tusssss dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 21/05/2008, 16h37

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