Partage
  • Partager sur Facebook
  • Partager sur Twitter

quand on décoche une checkbox

onuncheck?

Sujet résolu
    27 octobre 2008 à 11:47:42

    bonjour!
    voila mon problème: je fais un livre d'or avec une option permettant de ne permettre qu'a certaines personnes de voir les messages...
    et il y a donc des groupes d'utilisateurs... ceux qui sont connectés, ceux qui ont juste donné leur nom, ceux qui n'ont rien donné du tout... etc.
    donc j'ai mis des checkbox...
    et je veux que quand on coche la case tous, ça coche toutes les autres cases... ça je sais faire...
    mais quand je veux faire l'inverse (a savoir décocher), ça ne marche plus!!!(et quand je veux inverser ça ne marche plus non plus...) :(

    voici mon code javascript
    function cocher(cocher,a1,a2,a3,a4,a5,quand,objet)
    {
    	var b1="toi";
    	var b2="none";
    	var b3="all";
    	var b4="admin";
    	var b5="identifies";
    	for(i=1;i<=5;i++)
    	{
    		alert(i);
    		if(eval("a"+i)==1 && eval("b"+i)!=objet)
    		{
    			box = eval("document.forms.livreform." + eval("b"+i)); 
    			if(cocher="cocher")
    			{
    				box.checked = true;
    			}
    			if(cocher="decocher")
    			{
    				box.checked = false;
    			}
    			if(cocher="changer")
    			{
    				if(box.checked == true)
    				{
    					box.checked = false;
    				}
    				if(box.checked == false)
    				{
    					box.checked = true;
    				}
    			}
    		}
    	}
    }
    


    et le formulaire (ou la partie donc vous avez besoin)

    <form  id="livreform" method="post" action="body.php?body=livreor">
            <p>Mon site vous plaît ? Laissez-moi un message ! (déjà <span style="font-size:1.5em;color:red;"><?php echo $totalDesMessages ; ?></span> messages sur ce livre d'or!)</p>
            <p><hr />
                <h5>Pseudo :</h5><center><input name="pseudo" /><hr />
    			<h5>Personnes pouvant lire ce message: </h5>
    			<span title="si tu choisi ça, tu doit savoir qu'en tan qu'administrateur, Xavier aura quand même accès a ce post mais qu'il n'ira pas spécialement le lire(donc tu peut poster ds antisèches pour le control de MPI etc...)">Toi</span><input type="checkbox" name="toi" id="toi" /><br />
    			<span title="ça c'est stupide... mais bon... je met l'option quand même...">Personne</span><input type="checkbox" name="none" id="none" /><br />
    			<span title="enfin presque vu que l'accès au site demande un mot de passe...">Tout le monde</span><input type="checkbox" name="all" id="all" /><br />
    			<span title="Xavier">L'administrateur de ce site</span><input type="checkbox" name="admin" id="admin" /><br />
    			<span title="donc qui ont un compte donc que Xavier connait">Toutes les personnes identifiées</span><input onchange="cocher('decocher',1,1,1,1,1,'coche',id)" type="checkbox" name="identifies" id="identifies" /><br />
    			</select>
    </center><hr />
                <h5>Message</h5>
                <center><textarea id="message" onFocus="vider('livreform','message','Écris ton message ici!')" name="message" rows="10" cols="50">Écris ton message ici!</textarea></center><hr />
    			<input type="submit" value="Envoyer" /><hr />
            </p>
        </form>
    



    pour la fonction cocher,
    la 1ère variable dit ce qu'il faut faire (cocher/decocher/changer)
    les variables de la 2ème à la 6ème incluses disent sur quels élément il faut appliquer la fonction( 1 = il faut appliquer , 0=ne rien faire a cet élément)
    (les éléments sont dans le même ordre que dans le formulaire)
    la variable 7 dit quand il faut activer la fonction (quand on coche ou quand on décocher)
    la variable 8 chope l'ip de l'objet... qui est = à son name
    ce qui me permet de ne pas changer le statut du checkbox qui lance la fonction et d'éviter les bug (genre boucle infinie si on se change tout seul et que en se changeant il relance la fonction)


    et j'aimerai savoir si il existe un event "onuncheck" ou un truk du genre... ce qui pourrait remplacer le onchange et raccourcir beaucoup ma fonction...
    • Partager sur Facebook
    • Partager sur Twitter
      27 octobre 2008 à 12:13:59

      et pourquoi pas un onclick ?
      • Partager sur Facebook
      • Partager sur Twitter
        27 octobre 2008 à 12:17:32

        parce que que tu le coche ou que tu le décoche, tu click dessu... donc dans mon cas ca revient au même qu'un onchange...(enfin presque parce que sous ie g quelques bug avec le onchange... fo que je click plusieurs fois jsé pas pk...)
        merci quand même
        • Partager sur Facebook
        • Partager sur Twitter
          27 octobre 2008 à 14:09:24

          Hello wavierm02,

          Fais un onclick et testes ensuite la valeur de ta checkbox ;)
          • Partager sur Facebook
          • Partager sur Twitter
            27 octobre 2008 à 14:33:27

            Nop, pas onclick. Onchange.
            Pourquoi ? Parce que l'on peut parcourir les champs d'un formulaire avec la touche tab et cocher/décocher des checkbox avec la touche espace. Avec un évènement onClick, ce changement n'est pas pris en compte.
            Syntaxe complète pour appeler une fonction lorsque la case est cochée :
            onChange="if(this.checked){ maFonction(); }"
            
            • Partager sur Facebook
            • Partager sur Twitter
              27 octobre 2008 à 14:55:42

              mercii!!
              grâce a toi j'ai racourci ma conction et maintenant (je sais pas pourquoi) ca marhe pour les décocher et changer entre coché/décoché
              ^^

              MERCI!

              j'ai fin par faire un script qui marche si ca interesse qqn...

              function cocher(quand,a1,a2,a3,a4,a5,objet)
              {
              	var dfl="document.forms.livreform."//remplacer livreform par l'id de votre formulaire
              	objet=eval(dfl+objet);
              	if(quand=="c")
              	{
              		quand="true";
              	}
              	if(quand=="d")
              	{
              		quand="false";
              	}
              	if(objet.checked=quand)
              	{
              		var b1="toi";//remplacer les noms
              		var b2="none";
              		var b3="all";
              		var b4="admin";
              		var b5="identifies";
              		for(i=1;i<=5;i++)
              		{
              			if(eval("b"+i)!=objet.id)
              			{
              				var box = eval(dfl + eval("b"+i)); 
              				if(eval("a"+i)==1)
              				{
              					box.checked=true;
              				}
              				if(eval("a"+i)==0)
              				{
              					box.checked=false;
              				}
              			}
              		}
              	}
              }
              



              voila!
              PS: pour que ca marche , il faut que les checkbox aient un nom en un id identique...

              voila donc j'ai un code parfait qui me permet de faire exactement ce que je veux... mais il ne marche pas sous ie... HELP SVP! :(
              • Partager sur Facebook
              • Partager sur Twitter
                28 octobre 2008 à 19:56:16

                pour que ca marche sous ie il faut raouter un onclick qui fait exactement la même chose que le onchange... VIVE IE(<==ironie pure)
                • Partager sur Facebook
                • Partager sur Twitter

                quand on décoche une checkbox

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown