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 :

activé ou desactivé un groupe de chekbox


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Mars 2009
    Messages : 89
    Par défaut activé ou desactivé un groupe de chekbox
    Bonjour à tous

    J ai un formulaire avec deux boutons radio pour activé ou désactivé :
    . soit - la balise select name="ali"

    . soit - le groupe de checkbox name="'.$name.'[]" qui vaut $bat[]
    - la balise select name="nbbat"

    Je n arrive pas à sélectionner ma liste de checkbox pour les activés ou désactives.

    Merci de votre aide et de vos remarques.

    le formulaire :
    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
    27
     
    <form id="form" name="form" action="#" method="post">
     
    <fieldset>
    <legend>Alimentation&nbsp
    <input type="radio" id="f_alibat" name="alibat" value="ali" checked="checked onClick="gererAliBat()">
    <input type="radio" id="f_alibat2" name="alibat" value="bat" onClick="gererAliBat()">
    </legend>
     
    <label id="8" for="fapp_ali">Alimentation * : </label>
    <select id="fapp_ali" name="ali">
    <option value="-1">....</option>
    <option value="n">generer en php</option>
    </select>
     
    <label id="9" for="fapp_bat">Batterie * : </label>
    // dans une boucle while en php je genere ma liste de checkbox $name = bat:
    <input id="fapp_'.$name.'" class="form_input_checkbox" type="checkbox" name="'.$name.'[]" value="'.$id.'" '.$checked.' />'.$tabl_res['lib_enum'].' 
     
    <label id="10" for="fapp_nbbat">Nb. Batterie * : </label>
    <select id="fapp_nbbat" name="nbbat">
    <option value="-1">....</option>
    <option value="n">generer en php</option>
    </select>
     
    </fieldset>
    </form>
    javascript :
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    function delSelectOpt(Controle) {
    	for (var i=0; i<Controle.length; i++) {
    		Controle[i].selected = "";
    	}
    } 
     
    function delSelectcheck(Controle) {
    	for (var i=0; i<Controle.length; i++) {
    		Controle[i].checked = "";
    	}
    } 
     
    function gererAliBat() {
     
    	var controleur = window.document.getElementById("f_alibat").checked;
    	var aliControle = window.document.getElementById("fapp_ali");
    	var nbbatControle = window.document.getElementById("fapp_nbbat");
    	var liste =  window.document.getElementById('fapp_bat');
    	alert(liste);
     
     
     
    	if(controleur == true)  {
     
                    aliControle.disabled=false;
    		aliControle.focus();
    		delSelectcheck(liste);
    		for (var i = 0; i < liste.length; i++) {
    		   liste[i].disabled=true;
    		}
    		nbbatControle.value="-1";
    		nbbatControle.disabled=true;	
     
    	} else  {
     
                    aliControle.disabled=true;
    		aliControle.value="-1";
    		for (var i = 0; i < liste.length; i++) {
    		   liste[i].disabled=false;
    		}
    		nbbatControle.disabled=false;
    	}
    	return true;
    }

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Bonjour,
    il faudrait vérifier avec le code généré (qu'il aurait été préférable de donner à la place du PHP ), mais il semble bien que les id générés ne soient pas uniques.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input id="fapp_'.$name.'" class="form_input_checkbox" ...
    Peut être ça qui plante ton script ?
    Ca semble confirmé par le fait que tu t'attendes à récupérer une liste grâce à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var liste =  window.document.getElementById('fapp_bat');
    Un id devant être unique, getElementById ne retourne toujours qu'un seul élément.
    Visiblement tu devrais faire référence au name et utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var liste =  document.forms['form'].elements['fapp_bat'];
    ... et bien sûr virer les attributs id (ou alors les générer avec un compteur ou toute autre méthode les rendant uniques).

    A+

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Mars 2009
    Messages : 89
    Par défaut
    merci de ta réactivité :

    il faudrait vérifier avec le code généré (qu'il aurait été préférable de donner à la place du PHP ), mais il semble bien que les id générés ne soient pas uniques.
    je vous ai présenté ce code mais j ai cherché aussi avec l id unique en rajoutant un compteur à mes id pour les rendre unique.
    mais du coup je ne sais pas à l avance le nombre d élément de mon groupe de checkbox car ma source et une Bdd et cette liste peux varié.

    Un id devant être unique, getElementById ne retourne toujours qu'un seul élément.
    Visiblement tu devrais faire référence au name et utiliser
    Alors si je me tourne vers le name j'ai un problème la aussi ma liste est vide
    je pense que cela vient du fait que le name de ma balise input defini ainsi :

    je suis un peu perdu là
    je ne sais pas si je suis clair ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Mars 2009
    Messages : 89
    Par défaut
    Voici l'extrait du formulaire le code sources de la page envoyé par le serveur je n y avais pas pensé.

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    <div class="boite_form">
    <form id="form" name="form" action="#" method="post" onsubmit="return valid_eng()">
     
    <fieldset>
    <legend>
    Alimentation&nbsp;
    <input type="radio" id="f_alibat" name="alibat" value="ali" checked="checkedvalue="ali" checked="checked"class="form_input_radio" onClick="gererAliBat()">
    Batterie&nbsp;
    <input type="radio" id="f_alibat2" name="alibat" value="bat"class="form_input_radio" onClick="gererAliBat()">
    </legend>
    <p><label id="8" for="fapp_ali">Alimentation * : </label>
    <select id="fapp_ali" name="ali" >
    <option value="-1">....</option>
    <option value="1">Secteur (100-240 VAC 50/60 Hz) 50VA</option>
    <option value="2">Secteur (100-240 VAC 50/60 Hz) 50VA et Batterie interne</option>
    </select></p>
    <p><label id="9" for="fapp_bat">Batterie * : </label>
    <div class="divcheck">
    <table class="form_tab_check">
    <tr><td class="form_tab_td">
    <input id="fapp_bat0" class="form_input_checkbox" type="checkbox" name="bat[]" value="3" disabled="disabled" />AA 1.5V ALKALINE
    </td></tr>
    <tr><td class="form_tab_td">
    <input id="fapp_bat1" class="form_input_checkbox" type="checkbox" name="bat[]" value="4" disabled="disabled" />AA 1.5V LITHIUM  
    </td></tr>
    </table></div>
    </p>
    <p><label id="10" for="fapp_nbbat">Nb. Batterie * : </label>
    <select id="fapp_nbbat" name="nbbat"disabled="disabled">
    <option value="-1">....</option>
    <option value="5">1</option>
    <option value="7">1 ou 2</option>
    <option value="6">2</option>
    </select>
    </p>
    </fieldset>
    <p class="bouton_p"><input type="submit" name="submit" value="Ajouter" /></p>
    </form></div>

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Mars 2009
    Messages : 89
    Par défaut
    Merci à toi E.Bzz
    j'ai repris tous ça au calme :

    j ai incrémenté mon l'id de chaque checkbox
    pour garder le même nom pour chaque chekbox name="nomducheckbox[]"
    c'est plus pratique pour les contrôles et manipulations avec php ensuite.

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

Discussions similaires

  1. Activation et desactivation d'un champ dans un form
    Par danielperdriolle dans le forum IHM
    Réponses: 7
    Dernier message: 23/03/2006, 11h10
  2. Réponses: 4
    Dernier message: 05/12/2005, 21h32
  3. [debutant][CEdit] activer et desactiver
    Par mzt.insat dans le forum MFC
    Réponses: 3
    Dernier message: 31/10/2005, 08h39
  4. champ activé ou desactivé
    Par dark2 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 11/03/2005, 13h15
  5. champ activé ou desactivé
    Par dark2 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 10/03/2005, 17h09

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