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 :

Afficher masquer un bouton si une checkbox est cochée dans un tableau html


Sujet :

jQuery

  1. #1
    Membre actif Avatar de arthuro45
    Profil pro
    Développeur du dimanche
    Inscrit en
    Juillet 2009
    Messages
    602
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur du dimanche

    Informations forums :
    Inscription : Juillet 2009
    Messages : 602
    Points : 265
    Points
    265
    Par défaut Afficher masquer un bouton si une checkbox est cochée dans un tableau html
    Bonjour,

    Je tourne en rond avec cette fonction pourtant simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function affMasqBtnPrep(){
        var n = $("input:checked[name='prep[]']").length; // Nombre de checkbox cochée
        if(n == 0) {
                $("#BPrep").css({"visibility":"hidden"}); // Bouton invisible
        } else {
                $("#BPrep").css({"visibility":"visible"}); // Bouton visible
            }
    };
    La case à cocher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="checkbox" name="prep[]" value="'.$row['num_commande'].'" class="casePrep">
    Le bouton :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="button" id="BPrep" value="Edition" />
    J'aimerais afficher ou masquer un bouton (BPrep) en fonction de l'état des checkbox dans un tableau html. Les checkbox portent toutes le même nom mais des valeurs différentes.

    Actuellement le bouton est masqué au chargement de la page, mais quand je coche il ne se passe rien, pas d'erreur non plus.

  2. #2
    Membre actif Avatar de Meloooo
    Femme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2008
    Messages : 324
    Points : 288
    Points
    288
    Par défaut
    Bonjour,
    Tu peux utiliser le .show() ou le .hide() ca te fera moins de code.
    et je pense que les [] ne sont pas utiles...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    function affMasqBtnPrep(){
        var n = $('input:checked[name=prep]').length; // Nombre de checkbox cochée
        if(n == 0) {
                $("#BPrep").hide();// Bouton invisible
        } else {
                $("#BPrep").show(); // Bouton visible
            }
    };

  3. #3
    Membre actif Avatar de arthuro45
    Profil pro
    Développeur du dimanche
    Inscrit en
    Juillet 2009
    Messages
    602
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur du dimanche

    Informations forums :
    Inscription : Juillet 2009
    Messages : 602
    Points : 265
    Points
    265
    Par défaut
    Tu peux utiliser le .show() ou le .hide() ca te fera moins de code.
    et je pense que les [] ne sont pas utiles...
    Le bouton est bien masqué au chargement, mais toujours pas visible quand on coche une case. Pas d'erreur dans la console firefox, là je sèche...

  4. #4
    Membre actif Avatar de Meloooo
    Femme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2008
    Messages : 324
    Points : 288
    Points
    288
    Par défaut
    A quel moment appelle tu la fonction affMasqBtnPrep() ?

  5. #5
    Membre actif Avatar de arthuro45
    Profil pro
    Développeur du dimanche
    Inscrit en
    Juillet 2009
    Messages
    602
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur du dimanche

    Informations forums :
    Inscription : Juillet 2009
    Messages : 602
    Points : 265
    Points
    265
    Par défaut
    A quel moment appelle tu la fonction affMasqBtnPrep() ?
    Je l'appel au chargement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $("document").ready(function()  {
      affMasqBtnPrep();
    });

  6. #6
    Membre actif Avatar de Meloooo
    Femme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2008
    Messages : 324
    Points : 288
    Points
    288
    Par défaut
    Normal que ton bouton ne s'affiche pas, car tu appelles ta fonction au démarrage de la page, mais tu ne vérifies pas quand la checkbox est coché,
    je pense donc que tu dois jouer sur le .change de ta checkbox
    je ne sais pas si je suis très claire.
    tu lances ta fonction au chargement de la page + quand l'état de la checkbox change

  7. #7
    Membre actif Avatar de arthuro45
    Profil pro
    Développeur du dimanche
    Inscrit en
    Juillet 2009
    Messages
    602
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur du dimanche

    Informations forums :
    Inscription : Juillet 2009
    Messages : 602
    Points : 265
    Points
    265
    Par défaut
    tu lances ta fonction au chargement de la page + quand l'état de la checkbox change
    J'ai fais ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $("document").ready(function()  {    
          affMasqBtnPrep();
           $("input:checked[name=prep]").change(function(){
               affMasqBtnPrep();
           });
    });
    Mais ça ne doit pas ce coder ainsi .

  8. #8
    Membre actif Avatar de Meloooo
    Femme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2008
    Messages : 324
    Points : 288
    Points
    288
    Par défaut
    Essayes d'ajouter un class à tes checkbox :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input type="checkbox" class="prep" name="prep[]" value="'.$row['num_commande'].'" class="casePrep">
    et tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $("document").ready(function()  {    
          affMasqBtnPrep();
           $(".prep").change(function(){
               affMasqBtnPrep();
           });
    });

  9. #9
    Membre actif Avatar de arthuro45
    Profil pro
    Développeur du dimanche
    Inscrit en
    Juillet 2009
    Messages
    602
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur du dimanche

    Informations forums :
    Inscription : Juillet 2009
    Messages : 602
    Points : 265
    Points
    265
    Par défaut
    Essayes d'ajouter un class à tes checkbox :
    Non désolé ça ne fonctionne pas.

    ...mais tu ne vérifies pas quand la checkbox est coché
    Si j'ai bien compris, cette ligne vérifit si une case est cochée ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var n = $('input:checked[name=prep]').length; // Nombre de checkbox cochée
    et à chaque changement d'état des cases la fonction doit s'exécuter ?

  10. #10
    Membre actif Avatar de Meloooo
    Femme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2008
    Messages : 324
    Points : 288
    Points
    288
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var n = $('input:checked[name=prep]').length;
    Cette ligne vérifie le nombre de checkbox coché portant le name prep.
    et oui ta fonction doit s’exécuter au démarrage de la page + quand une checkbox est coché ou décoché
    Je viens d'essayer de mon côté avec le code 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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    		<script type="text/javascript" src="jquery.js"></script>
    <script>
      function affMasqBtnPrep(){
     
         var n = $("input:checked[name='prep[]']").length;// Nombre de checkbox cochée
        if(n == 0) {
                $("#BPrep").hide();// Bouton invisible
        } else {
                $("#BPrep").show(); // Bouton visible
            }
     
    }
    $(document).ready(function() {
      affMasqBtnPrep();
    	$(".test").change(function () {
      affMasqBtnPrep();
    	});
    });
     
     
    </script>
     
    <input type="checkbox" name="prep[]" class="test" value="" class="casePrep">
     
    <input type="button" id="BPrep" value="Edition" />
    Et ca fonctionne correctement.
    Le bouton s'affiche lorsque la checkbox est cochée, et disparait lorsqu'elle n'est pas cochée...

  11. #11
    Membre actif Avatar de arthuro45
    Profil pro
    Développeur du dimanche
    Inscrit en
    Juillet 2009
    Messages
    602
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur du dimanche

    Informations forums :
    Inscription : Juillet 2009
    Messages : 602
    Points : 265
    Points
    265
    Par défaut
    Ca fonctionne.
    L'erreur venait de la syntaxe sur le name

    Bon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var n = $("input:checked[name='prep[]']").length;// Nombre de checkbox cochée
    Mauvais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var n = $('input:checked[name=prep]').length;
    Merci pour ta persévérance

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

Discussions similaires

  1. Afficher un champ si une checkbox est cochée
    Par Toiine dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 03/12/2014, 15h20
  2. Afficher une div lorsqu'une checkbox est cochée
    Par nicolas2603 dans le forum jQuery
    Réponses: 3
    Dernier message: 05/02/2010, 17h15
  3. afficher une valeur sur une feuille lorsqu'une checkbox est cochée
    Par chrnoe dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 23/12/2008, 14h39
  4. bouton valider actif que si une checkbox est cochée
    Par chrisclauzel dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 20/02/2008, 23h14
  5. Réponses: 5
    Dernier message: 23/03/2006, 12h41

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