Page 1 sur 1

Bouton et formulaire.

Posté : 06 mai 2006, 12:08
par Mouet
Bonjour,

J'ai un petit problème concernant un formulaire et la facon dont l'envoyer. Dans ce formulaire, il n'y a que des checkbox dont une qui me permet de toutes les sélectionner. Pour ce faire, j'index tous les éléments du formulaire et les coches/décoches en fonction.

Malheureusement, si j'ajoute un bouton, celui ci sera pris en compte avec les autres éléments et, cela fait naturelement bugger le script.

Code : Tout sélectionner

nbr = document.form.elements.length; if (document.form.elements[0].checked) { for (i=1; i < nbr; i++) { document.form.elements[i].checked=1; } }
Est-il possible des lors d'envoyer le formulaire par le biais d'un button/autre en dehors de celui ci?

D'avance merci.

Posté : 06 mai 2006, 12:51
par Cyrano
Salut,
traite tes cases à cocher indépendament du nombre d'éléments dans le formulaire. Attribue à chaque case un identifiant qui lui soit propre et ensuite crée une fonction pour cocher ou décocher tout en utilisant un tableau pour stocker ces identifiants. Proposition exemple:

Code : Tout sélectionner

<?xml version="1.0" encoding="iso-8859-1" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" xml:lang="fr" /> <title>Cases à cocher</title> <script type="text/javascript"> /* <![CDATA[ */ function toutCocher() { /* On vérifie si la case générale est ochée ou non */ var tout = document.forms['monform'].elements['cochetout'].checked; /* On liste les cases à cocher individuelles */ var cases = new Array('coche1', 'coche2', 'coche3', 'coche4', 'coche5', 'coche6', 'coche7', 'coche8', 'coche9', 'coche10'); /* Si la case générale est cochée, on coche toutes ls individuelles */ if(tout == true) { for(num in cases) { document.forms['monform'].elements[cases[num]].checked = true; document.getElementById('labelGen').innerHTML = 'Tout décocher' } } /* sinon on décoche toutes les individuelles */ else { for(num in cases) { document.forms['monform'].elements[cases[num]].checked = false; document.getElementById('labelGen').innerHTML = 'Tout cocher' } } } /* ]]> */ </script> </head> <body> <form action="" method="post" id="monform"> <fieldset> <label><span id="labelGen">Tout cocher</span> : <input type="checkbox" name="cochetout" id="cochetout" onclick="toutCocher();" /></label><br /> <label>Case 1 : <input type="checkbox" name="coche1" id="coche1" /></label><br /> <label>Case 2 : <input type="checkbox" name="coche2" id="coche2" /></label><br /> <label>Case 3 : <input type="checkbox" name="coche3" id="coche3" /></label><br /> <label>Case 4 : <input type="checkbox" name="coche4" id="coche4" /></label><br /> <label>Case 5 : <input type="checkbox" name="coche5" id="coche5" /></label><br /> <label>Case 6 : <input type="checkbox" name="coche6" id="coche6" /></label><br /> <label>Case 7 : <input type="checkbox" name="coche7" id="coche7" /></label><br /> <label>Case 8 : <input type="checkbox" name="coche8" id="coche8" /></label><br /> <label>Case 9 : <input type="checkbox" name="coche9" id="coche9" /></label><br /> <label>Case 10 : <input type="checkbox" name="coche10" id="coche10" /></label><br /> <input type="button" name="rien" id="rien" value="Bouton quelconque" /></label><br /> <input type="submit" name="envoi" id="envoi" value="Envoyer" /></label><br /> </fieldset> </form> </body> </html>

Posté : 06 mai 2006, 12:59
par Truc
Salut,
Effectue un test sur le type d'élément traité pour repérer les cases:
if (document.form.elements[0].checked)
   {
     for (i=1; i < nbr; i++)
     {
         if(document.form.elements[i].type == "checkbox")
             document.form.elements[i].checked= true;
     }
   }

Posté : 06 mai 2006, 13:52
par Mouet
Merci beaucoup, ca marche niquel !

Et hop, tag résolu :p