Nombre de Checkbox cochée

Résolu
cs_jumano Messages postés 64 Date d'inscription dimanche 1 mai 2005 Statut Membre Dernière intervention 29 février 2008 - 24 avril 2007 à 10:55
cs_jumano Messages postés 64 Date d'inscription dimanche 1 mai 2005 Statut Membre Dernière intervention 29 février 2008 - 27 avril 2007 à 09:55
Bonjour,
J'ai récupéré sur le forum une fonction permettant de calculer le nombre de checkbox cochée dans un formulaire (http://www.javascriptfr.com/infomsg_NOMBRE-CHECKBOX-COCHEES_410273.aspx), je l'ai légèrement modifié afin de savoir si au moins une checkbox de mon formuliare était cochée avant le submit.
function Validation() {
if (document.form.cache.value < 1)
{
alert ('Attention vous devz cocher au moins une case !');
return false;
}
return true;
}


Mes checkbox se crééent dynamiquement suite à une requête sql. J'ai deux checkbox par ligne qui sont liées.
Je ne connais donc pa s le nombre exact de mes checkbox.

Sur chaque checkbox générée j'ai une autre fonction permettant de rendre "disable" la seconde checkbox liée.
function GereControle(Controleur, Controle, Masquer) {
var objControleur = document.getElementById(Controleur);
var objControle = document.getElementById(Controle);
   if (Masquer=='1')
   objControle.style.visibility=(objControleur.checked==false)?'visible':'hidden';
   else
   objControle.disabled=(objControleur.checked==false)?false:true;
   return true;
}


Et voici mon formulaire :

<form id="form" name="form" method="post" action="Mapage.php">

" onClick="GereControle('chkb_1_<?php echo $row_rsBureau['ID_BUREAU']; ?>', 'chkb_2_<?php echo $row_rsBureau['ID_BUREAU']; ?>', '0');" value="<?php echo $row_rsBureau['ID_BUREAU']; ?>" />,

" onClick="GereControle('chkb_2_<?php echo $row_rsBureau['ID_BUREAU']; ?>', 'chkb_1_<?php echo $row_rsBureau['ID_BUREAU']; ?>', '0');" value="<?php echo $row_rsBureau['ID_BUREAU']; ?>" />,

<?php echo $row_rsBureau['BUREAU']; ?>



Ces deux fonctionnent très bien mais lorqu'elle ne sont pas activé en même temps.
C'est à dire que dès que j'intègre dans ma balise la fonction 'checkbox()' la fonction GenreControle ne fonctionne plus.
Je me doute que cela vient que le onclick est utilisé dans les deux fonctions. J'ai essayé des modifs en passant par onchange, onselect mais rien à faire.
Si quelqu'un pouvait me donner un petit coup de main.
Merci.

19 réponses

cs_jumano Messages postés 64 Date d'inscription dimanche 1 mai 2005 Statut Membre Dernière intervention 29 février 2008
27 avril 2007 à 09:55
Bonbjour, j'ai trouvé une solution à mon problème ici : http://www.editeurjavascript.com/forum/vt.php?tid=5-41392-0
3
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
24 avril 2007 à 14:11
Bonjour,

et comment fait-on nous avec les variables php ?
comment deviner ce qu'elles contiennent ?

>>cela vient que le onclick est utilisé dans les deux fonctions.
    probablement pas.
    par contre j'éviterais d'appeler une fonctioncheckBox()
       sinon, si ça ne fonctionne pas en changeant de nom,
          je donnerais ce quelle fait...
    et :






|÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷|÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷|÷÷÷÷÷÷÷÷÷÷÷÷÷÷|
| Avec | et mieux : <label style="color: rgb(0, 128, 0);">Télécharger</label> |
|÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷|÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷|÷÷÷÷÷÷÷÷÷÷÷÷÷÷|
|<label style="color: rgb(128, 0, 0);">FireFox</label> |regarder la "console d'erreurs" | FireBug |
| | Outils / Console d'erreurs | |
|÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷|÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷|÷÷÷÷÷÷÷÷÷÷÷÷÷÷|
|<label style= "color: rgb(128, 0, 0);">Internet Explorer</label>|activer le deboggage : utils/options I le Debogger IE|
| | dans la liste, sous "Navigation" : décocher | |
| | ° Afficher une notification de chaque erreur de script | |
| | ° Désactiver le débogage de Scripts (autres applications)| |
| | ° Désactiver le débogage de Scripts (Internet Explorer) | |
|÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷|÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷|÷÷÷÷÷÷÷÷÷÷÷÷÷÷|








<hr />



Cordialement            Bul     [mon Site]     [=Bul M'écrire]



<hr />
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
24 avril 2007 à 14:13
j'ai omis de dire : toujours donner la page html générée
    pas le php ( enfin ... UN PETIT EXTRAIT )
<hr />    Cordialement            Bul         [mon Site]         [M'écrire]<hr />
0
cs_jumano Messages postés 64 Date d'inscription dimanche 1 mai 2005 Statut Membre Dernière intervention 29 février 2008
24 avril 2007 à 16:07
Bonjour,
Le changement de nom ne change rien.
Je mets le code source de ma page générée :
<title>Document sans titre</title>
<link href="styles.css" rel="stylesheet" type="text/css" />
<script language="Javascript">
// ==================
// Activations - Désactivations
// ==================
function GereControle(Controleur, Controle, Masquer) {
var objControleur = document.getElementById(Controleur);
var objControle = document.getElementById(Controle);
 if (Masquer=='1')
  objControle.style.visibility=(objControleur.checked==false)?'visible':'hidden';
 else
  objControle.disabled=(objControleur.checked==false)?false:true;
 return true;
}
</script>
<script language="javascript" type="text/javascript">
function annuler()
{
  if (confirm('Voulez-vous vraiment annuler cette affectation ?')) {
  window.self.location.href="affectation.php";
  return true;
  }
  else {
  return false;
  }
}
</script>
<script type="text/javascript">
function Test()
{
nf = document.form1;
cachee = nf.cache;
cachee.nombre = 0;
for (e=0;e<nf.length;e++)
if(nf.elements[e].name.indexOf("idbureau")==0)
{
nf.elements[e].onclick = new Function("cachee.nombre = cachee.nombre + (this.checked?1:-1);cachee.value = cachee.nombre;")
if(nf.elements[e].checked)cachee.nombre++;
}
cachee.value = cachee.nombre;
}
</script>
<script type="text/javascript">
function Validation()
{
if(document.form1.cache.value < 1)
{
alert ('Attention vous devez cocher au moins une case "Pour ACTION" ou "Pour INFO" pour affecter ce courrier !');
return false;
}
return true;
}
</script>
</head>



  ----

    Utilisateur connect&amp;eacute; : a a,
         
D&amp;eacute;connexion

   ,
    &amp;nbsp;,
 

 ----

      ,
          
Affectation du courrier &amp;quot;Arriv&amp;eacute;&amp;quot; N&amp;deg; : 5 / 2007
  ,
     &amp;nbsp;,
 

<form onsubmit="return Validation();" action="AffectCourAR1.php"" method="POST" name="form1" id="form1">
 ----

      Pour Action,
      Pour Info,
        &amp;nbsp;,
      &amp;nbsp;

                                     ,
 

 ----

       

         
       

        <label for="checkbox"></label>
       

  ,
          

         
       

        <label for="checkbox2"></label>,
        &amp;nbsp;,
        Secrétariat,
 

 ----

       

         
       

        <label for="checkbox"></label>
       

  ,
          

         
       

        <label for="checkbox2"></label>,
        &amp;nbsp;,
        Comptabilité,
 


Le débuggage ne fait remonté aucune alerte, le seul soucis c'est que la fonction "GereControle" ne fonctionne pas mais par contre la fonction "Test" elle fonctionne.
Merci 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
24 avril 2007 à 16:21
>>Le débuggage ne fait remonté aucune alerte

    beuh.... ben déjà, si je lance, tel quel : sur la ligne cachee.nombre = 0;    cachee n'est pas un objet.
tu n'as pas activé le deboggage... ou tu ne ragardes pas la "console d'erreurs"
je ne regarde donc pas plus loin pour l'instant....


<hr />



Cordialement        Bul     [mon Site]     [M'écrire]



<hr />
0
cs_jumano Messages postés 64 Date d'inscription dimanche 1 mai 2005 Statut Membre Dernière intervention 29 février 2008
24 avril 2007 à 16:56
Désolé effectivement, j'ai remis les options par défaut et fait comme tu me là indiqué et là j'ai une erreur :




erreur : 'nf.cache' a la valeur nulle ou n'est pas un objet.


0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
25 avril 2007 à 06:42
tout baigne alors...
<hr />                Cordialement       Bul     [mon Site]     [M'écrire]<hr />
0
cs_jumano Messages postés 64 Date d'inscription dimanche 1 mai 2005 Statut Membre Dernière intervention 29 février 2008
25 avril 2007 à 07:55
Tout baigne .... non
Si je comprends bien, le soucis vient de la déclaration de la variable 'cachee'.
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
25 avril 2007 à 08:10
nf = document.form1;         d'accord, le formulaire "form1" existe
cachee = nf.cache;              "cache" pas trouvé dans ce formulaire; par contre
cachee.nombre = 0;            ni "nombre" d'ailleurs
pas trouvé non plus </form>
<hr />


Cordialement            Bul     [mon Site]     [M'écrire]



<hr />
0
cs_jumano Messages postés 64 Date d'inscription dimanche 1 mai 2005 Statut Membre Dernière intervention 29 février 2008
25 avril 2007 à 08:27
'cache' devrait correspondre à quoi ?
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
25 avril 2007 à 10:00
je répondrais : pas la bonne question.
à quoi est censé te servir cache ?
si c'est dans un formulaire, c'est donc une balise html
    (  input, textarea... )  et on utilise cache.value ( par exemple )
si c'est une "variable interne" à javascript
    var cache...
    je pense que ça va te servir à compter donc var cache=0; et plus tard cache++;
    mais à quoi te sert nombre ?

<hr />


Cordialement            Bul     [mon Site]     [M'écrire]



<hr />
0
cs_jumano Messages postés 64 Date d'inscription dimanche 1 mai 2005 Statut Membre Dernière intervention 29 février 2008
25 avril 2007 à 10:39
A vrai dire je ne connait pas trop même très peu le javascript.
J'avais récupéré ce script sans vraiment comprendre la fonction.
Là je patauge ..
Je vais laissé de côté pour l'instant ...
0
cs_jumano Messages postés 64 Date d'inscription dimanche 1 mai 2005 Statut Membre Dernière intervention 29 février 2008
25 avril 2007 à 15:42
Bon après avoir pris un bon bol d'air, je reviens.
En fait je ne doit pas voir très clair car j'avais oublié un champ de type 'hidden' portant le nom 'cache'.
Maintenant je n'ai plus d'alerte, la fonction Test(), me permettant de connaitre le nombre de case cochée, fonctionne ( j'arrive à récupéré la valeur de la variable sur une nouvelle page au submit du formulaire). Par contre la fonction GereControle elle ne fonctionne pas mais ne renvoie pas d'alerte.
0
cs_jumano Messages postés 64 Date d'inscription dimanche 1 mai 2005 Statut Membre Dernière intervention 29 février 2008
25 avril 2007 à 15:45
Une petite ptrécision, i je supprime la fonction Test() alors la fonction GereControle() fonctionne...
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
25 avril 2007 à 16:05
parce qu'il y a une erreur dans test.
        cachee.nombre = 0; c'est rectifié aussi ?
tu es sous IE ? deboggage activé ? tu es sous FF ? tu as regardé la "console d'erreur" ?
<hr />


Cordialement            Bul     [mon Site]     [M'écrire]



<hr />
0
cs_jumano Messages postés 64 Date d'inscription dimanche 1 mai 2005 Statut Membre Dernière intervention 29 février 2008
25 avril 2007 à 16:20
Je suis IE avec le déboggage activé et avec afficher une notification à chaque erreur de script.
J'ai fait le test suivant : j'ai rajouté un 's' à 'cache' dans la fonction et là j'ai une erreur qui apparait.
Je n'ai pas modifié 'cachee.nombre=0;' puisque je ne sais pas quoi mettre à la place ...
0
cs_jumano Messages postés 64 Date d'inscription dimanche 1 mai 2005 Statut Membre Dernière intervention 29 février 2008
25 avril 2007 à 16:40
Si je remplace cachee.nombre = 0; par cachee = 0; là la fonction ne marche plus.
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
25 avril 2007 à 18:23
>>cachee = 0;
        cachee = nf.cache; on peut y mettre "0" tu crois ?
>>'ai rajouté un 's' à 'cache'
       est-ce que "caches" existe ?
>>cachee.nombre = 0;
    est-ce que "nombre" dans "cachee" existe ?

>>puisque je ne sais pas quoi mettre à la place
    ah ben alors.... on est mal là.
   

<hr />
Cordialement            Bul     [mon Site]     [=Bul M'écrire]
<hr />
0
cs_jumano Messages postés 64 Date d'inscription dimanche 1 mai 2005 Statut Membre Dernière intervention 29 février 2008
25 avril 2007 à 21:03
Comme je l'ai dit je ne suis qu'un débutant, je viens sur ce forum pour chercher de l'aide et obtenir des explcations sur une fonction que je ne comprends pas. Je ne viens pas là pour me faire engueuler.
Merci quand même de t'être penché sur mon cas.
0
Rejoignez-nous