Vérification nombre checkbox

[Résolu]
Signaler
Messages postés
116
Date d'inscription
mardi 28 novembre 2006
Statut
Membre
Dernière intervention
10 mars 2009
-
Messages postés
116
Date d'inscription
mardi 28 novembre 2006
Statut
Membre
Dernière intervention
10 mars 2009
-
Bonjour, voila j'ai une page à faire avec le choix de 5 objets à faire sur une totalité de 15.
J'ai donc affiché les 15 objets en donnant le nom checkbox suivants:
objet1, objet2, objet3....

J'aimerai en fait que lorsque l'on valide le formulaire, il compte le nombre d'objets s'électionnés et que si il y en a plus de 5 il affiche une fenêtre d'alerte.

j'ai commence par un :
function verif() {
  for(i=0; i<=15; i++) {

  }
}

mais apres je ne sais pas trop quoi faire

25 réponses

Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
12
ah oui... j'ai oublié de préciser cela
effectivement coté php, ça peut géner !

if(document.getElementById(box[j]).checked) {
ça ne peut pas fonctionner, un ID doit être unique sur une page
mettre un id progressif ça irait pour le javascript mais pas pour le php

il faut mettre un name avec des crochets !
<form name="frm"....
        <input type="checkbox" name="chk[]" ....
        <input type="checkbox" name="chk[]" ....

        <input type="checkbox" name="chk[]" ....

...

coté javascript on utilise document.frm["chk[]"].length et document.frm["chk[]"][index]
et coté php, $_POST["chk"] est un array.
Messages postés
116
Date d'inscription
mardi 28 novembre 2006
Statut
Membre
Dernière intervention
10 mars 2009

gniii désolé pour la forme du message ce n'ai pas trop visible...
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
12
bonjour,
met le même name
et teste document.name_du_formulaire_name_des_checkbox[index].checked
dans ta boucle
Cordialement[mon Site][M'écrire]Bul
Messages postés
116
Date d'inscription
mardi 28 novembre 2006
Statut
Membre
Dernière intervention
10 mars 2009

C'est à dire:
function verif() { 
  for(i=0; i<=15; i++) { 
    if(document.form.objet[i].checked <5) {
      alert("message!");
  } 
} 
Messages postés
116
Date d'inscription
mardi 28 novembre 2006
Statut
Membre
Dernière intervention
10 mars 2009

humm pourquoi le message ne prend pas en compte les retour à la ligne avec entrée??
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
12
_ checked c'est l'état du checkbox, coché ou pas
donc tester par rapport à 5 n'a aucun sens
il faut d'abord compter ceux cochés ( ou les autres )

_ perso j'évite d'utiliser des noms connus du html/javascript....
   un jour ou l'autre ç te posera des problèmes ( form par exemple )

_ >>le message ne prend pas en compte les retour à la ligne avec entrée?
pas de souci si tu tapes directement ou si tu copies/colles depuis
un éditeur de textes normal, pas depuis je ne sais quel outil

[mon Site][M'écrire]Bul
Messages postés
116
Date d'inscription
mardi 28 novembre 2006
Statut
Membre
Dernière intervention
10 mars 2009

>>ok pour le retour à la ligne

>>Ne t'inquiete pas j'ai mis form pour le message du forum,
j'utilise bien des nom differents dans mn code.

Exist il une fonction qui permet de compter en javascript ou comment proceder??
ex:
if(count(document.form.objet[i].checked)<5)
Messages postés
116
Date d'inscription
mardi 28 novembre 2006
Statut
Membre
Dernière intervention
10 mars 2009

bon ben ca ne veut toujours pas faire de retour à la ligne bizarre
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
12
>>Exist il une fonction qui permet de compter
toto=toto+1;
ou toto++;
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
12
>>bon ben ca ne veut toujours pas faire de retour à la ligne bizarre
tu tapes directement ou tu fais un copié/collé
et dans ce cas, depuis quel logiciel ?

tu initialises une variable à 0
tu boucles sur les checkbox
si elle est cochée, tu fais +1 dans la variable
en fin de boucle, variable contient le nombre de checkbox cochées
Messages postés
116
Date d'inscription
mardi 28 novembre 2006
Statut
Membre
Dernière intervention
10 mars 2009

ok oui desole...
donc dis moi si c'est juste:
function verif() {
  var i=0; 
  while(document.form.objet[i].checked) {
    i++;
    if(i <5) {
      alert("message!"); 
    } 
  }
}
Messages postés
116
Date d'inscription
mardi 28 novembre 2006
Statut
Membre
Dernière intervention
10 mars 2009

petite correction:
function verif() { 
  var i=0;
  for(j=0; j<15; j++) {  
    while(document.voter.objet[j].checked) { 
      i++; 
  if(i <5) { 
    alert("message!"); 
  } 
    }
  }	
}
Messages postés
116
Date d'inscription
mardi 28 novembre 2006
Statut
Membre
Dernière intervention
10 mars 2009

Pour le retour a la ligne j'ai essayer les 2.
j'utilise notepad++ pour coder.
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
12
while(document.voter.objet[j].checked ???
ça veut dire tant que le checkbox est cochée !
donc s'il l'est : boucle infernale : rien ne permet de sortit du while
sinon, bah....

fait d'abord ton algorithme en français, puis traduit en javascript.
( donc pas "tant que" mais "si" )
Messages postés
116
Date d'inscription
mardi 28 novembre 2006
Statut
Membre
Dernière intervention
10 mars 2009

J'avais pensé à :
tant qu'il y a une checkbox coche {
i++
}

dans se cas il va voir par exemple qu'il y a 2 checkbox coche et pas les autre non?
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
12
>>Pour le retour a la ligne
tu es avec quel navigateur ?
opera, chrome, safari : passer par la "textbox" classique
( ou alors taper les balises html nécessaires
pour retour à la ligne ! )
Firefox : <tab> mal géré, le reste est ok
IE, tout devrait baigner.
Messages postés
116
Date d'inscription
mardi 28 novembre 2006
Statut
Membre
Dernière intervention
10 mars 2009

ha ok je suis sous chrome donc ca..
bon à savoir
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
12
tant qu'il y a ?
pourquoi ne pas faire si le checkbox est coché,
puisque tu les regardes tous ces checkbox
Messages postés
116
Date d'inscription
mardi 28 novembre 2006
Statut
Membre
Dernière intervention
10 mars 2009

oui c'est vrai comme on est dans un for.

je refait lol


function verif() { 

  var i=0;

  for(j=0; j<15; j++) {
  
    if(document.voter.objet[j].checked) {
 
      i++;
 
      alert(i);

    }

  }

  if(i <5) {
 
alert("message!");
 
return false;

  }
 
return true;
  
}



Donc ici, on verifie avec if si il y a des checkbox cochées.

Si il y en a on rajoute +1 à i.

apres on regarde à combien est i si i lest inferieur à 5 on mets un message d'alert
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
12
ça doit baigner...
j'aurais mis :
for(j=0; j<document.voter.objet.length; j++) {
comme ça, la boucle sera toujours valable
même si le nombre de checkbox évolue.
@+