Nombre de Checkbox cochée [Résolu]

Messages postés
64
Date d'inscription
dimanche 1 mai 2005
Dernière intervention
29 février 2008
- - Dernière réponse : cs_jumano
Messages postés
64
Date d'inscription
dimanche 1 mai 2005
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.
Afficher la suite 

Votre réponse

19 réponses

Meilleure réponse
Messages postés
64
Date d'inscription
dimanche 1 mai 2005
Dernière intervention
29 février 2008
3
Merci
Bonbjour, j'ai trouvé une solution à mon problème ici : http://www.editeurjavascript.com/forum/vt.php?tid=5-41392-0

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 104 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_jumano
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Dernière intervention
15 octobre 2013
0
Merci
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 />
Commenter la réponse de cs_bultez
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Dernière intervention
15 octobre 2013
0
Merci
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 />
Commenter la réponse de cs_bultez
Messages postés
64
Date d'inscription
dimanche 1 mai 2005
Dernière intervention
29 février 2008
0
Merci
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 
Commenter la réponse de cs_jumano
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Dernière intervention
15 octobre 2013
0
Merci
>>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 />
Commenter la réponse de cs_bultez
Messages postés
64
Date d'inscription
dimanche 1 mai 2005
Dernière intervention
29 février 2008
0
Merci
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.


Commenter la réponse de cs_jumano
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Dernière intervention
15 octobre 2013
0
Merci
tout baigne alors...
<hr />                Cordialement       Bul     [mon Site]     [M'écrire]<hr />
Commenter la réponse de cs_bultez
Messages postés
64
Date d'inscription
dimanche 1 mai 2005
Dernière intervention
29 février 2008
0
Merci
Tout baigne .... non
Si je comprends bien, le soucis vient de la déclaration de la variable 'cachee'.
Commenter la réponse de cs_jumano
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Dernière intervention
15 octobre 2013
0
Merci
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 />
Commenter la réponse de cs_bultez
Messages postés
64
Date d'inscription
dimanche 1 mai 2005
Dernière intervention
29 février 2008
0
Merci
'cache' devrait correspondre à quoi ?
Commenter la réponse de cs_jumano
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Dernière intervention
15 octobre 2013
0
Merci
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 />
Commenter la réponse de cs_bultez
Messages postés
64
Date d'inscription
dimanche 1 mai 2005
Dernière intervention
29 février 2008
0
Merci
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 ...
Commenter la réponse de cs_jumano
Messages postés
64
Date d'inscription
dimanche 1 mai 2005
Dernière intervention
29 février 2008
0
Merci
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.
Commenter la réponse de cs_jumano
Messages postés
64
Date d'inscription
dimanche 1 mai 2005
Dernière intervention
29 février 2008
0
Merci
Une petite ptrécision, i je supprime la fonction Test() alors la fonction GereControle() fonctionne...
Commenter la réponse de cs_jumano
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Dernière intervention
15 octobre 2013
0
Merci
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 />
Commenter la réponse de cs_bultez
Messages postés
64
Date d'inscription
dimanche 1 mai 2005
Dernière intervention
29 février 2008
0
Merci
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 ...
Commenter la réponse de cs_jumano
Messages postés
64
Date d'inscription
dimanche 1 mai 2005
Dernière intervention
29 février 2008
0
Merci
Si je remplace cachee.nombre = 0; par cachee = 0; là la fonction ne marche plus.
Commenter la réponse de cs_jumano
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Dernière intervention
15 octobre 2013
0
Merci
>>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 />
Commenter la réponse de cs_bultez
Messages postés
64
Date d'inscription
dimanche 1 mai 2005
Dernière intervention
29 février 2008
0
Merci
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.
Commenter la réponse de cs_jumano

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.