Compter les coches

RiKé Messages postés 45 Statut Membre -  
RiKé Messages postés 45 Statut Membre -
Bonjour @ tous

Je cherche à créer un compteur qui me dise combien de checkbox sont cochées en temps réel sur une page .asp
Un JavaScript sans doute ???

5 réponses

slopera Messages postés 70 Statut Membre
 
Effectivement, Javascript :
Declaration de tes checkbox :
<form name="mon_form" ...>
<input type="checkbox" name="check1">
<input type="checkbox" name="check2">
...
</form>

Pour récupérer le compte, tu fais appel à la fonction suivante :

function compte() {
var compte ;
for (i=1 ; i<=n ; i++) {
if (eval("document.mon_form.check"+i+".checked")) {
compte++;
}
}
return compte ;
}

Cela devrait marcher.
Dis moi quand même si cela marche ou pas.

Stéphanie
0
RiKé Messages postés 45 Statut Membre
 
Merci de ton aide Stéphanie...
Ca marche mieux.... mais au lieu d'afficher le compte, il
0
RiKé Messages postés 45 Statut Membre
 
Merci de ton aide Stéphanie...
Ca marche mieux.... mais au lieu d'afficher le compte, il affiche NaN

J'utilise la propriété OnClick="JavaScript:compte();" pour appeler la fonction compte()
0
slopera Messages postés 70 Statut Membre > RiKé Messages postés 45 Statut Membre
 
Dans quoi tu fais le onclick=compte() ?
Développe moi un peu ton code pour voir...
0
RiKé Messages postés 45 Statut Membre
 
Voici le code de mon formulaire...
Les checkbox sont créées en dynamique

<form method="post" action="plan_query_societe.asp" name="nomenc">

<%Dim x
x=0
Do while not Rs_societe.EOF
x=x+1%>

<input type="checkbox" onclick="javascript:compte();" name="check<%=x%>" value="<%=Rs_societe("cle1_cle2")%>"><%=Rs_societe("societe")%><BR>

<%
Rs_societe.MoveNext
Loop%>

.../...
</form>

et voici la fonction

<script language="JavaScript">
function compte() {
var compte ;
for (i=1 ; i<=355 ; i++) {
if (eval("document.nomenc.check"+i+".checked")) {
compte++;
}
}
alert("\n\nVous avez sélectionné " + compte + " sociétés !");
}
</script>

Je n'y connais pas grand chose en JavaScript... la variable compte est-elle bien déclarée?

Merci beaucoup pour ton aide...
0
slopera Messages postés 70 Statut Membre
 
Le variable compte ... n'est pas initialisée !! Désolée ...
Met :
var compte = 0 ;

Dis moi si ça roule comme ça.
Stéphanie
0
RiKé Messages postés 45 Statut Membre
 
Ca marche très bien, merci beaucoup.
Cependant vu le nombre de checkboxes de ma pages (350), le script est un peu long à tout balayer....
J'va réfléchir à autre chose...

Merci encore pour ton coup de pouce...
J'espère un jour pouvoir à mon tour t'aider.

@+
Eric
0
slopera Messages postés 70 Statut Membre
 
Pt-être en mettant une variable globale Javascript :
<script>
var mon_compte = 0 ;
</script>
Je crois que par défaut aucune société n'est choisie, donc tu l'initialise à 0 sinon, tu comptes le nombre de société cliquées avec la fonction compte().

Puis, quand tu cliques sur un checkbox, tu vérifies si c'était cliqué : alors, tu enlève 1 à ta variable, sinon, tu ajoutes 1 :

<input type=checkbox name=check2 onclick="maj('click2')">...

<script>
function maj(name) {
if (document.mon_form.name.checked) {
mon_compte++;
alert ("vous avez choisi" + mon_compte + "societe");
}
else {
mon_compte--;
alert ("vous avez choisi" + mon_compte + "societe");
}
}
</script>

ou alors, tu ne fais pas appel à ta fonction compte() à chaque fois mais seulement quand tu valides :

<input type=submit name="valider" onclick="compte()">

Si tu t'y connais en XMLDOM, tu peux peut-être m'aider ...

Stéphanie
0
slopera Messages postés 70 Statut Membre > slopera Messages postés 70 Statut Membre
 
OUPS
il fallait voir bien sur :
... onclick="maj('check2')" ...
0
RiKé Messages postés 45 Statut Membre
 
Vraiment merci, ca tourne beaucoup plus vite, sauf que le décochage compte comme un cochage, c-a-d, que je coche ou décoche, mon_compte=mon_compte+1

J'ai modifié un peu le script, mais sans résultat...!

function maj(name) {
if (document.nomenc.name.checked = true) {
mon_compte++;
alert ("vous avez choisi " + mon_compte + " societes");
}
if (document.nomenc.name.checked = false) {
mon_compte--;
alert ("vous avez choisi " + mon_compte + " societes");
}
}
0
slopera Messages postés 70 Statut Membre
 
As-tu bien mis dans ton input :
<input type="checkbox"
onclick="javascript:maj('check<%=x%>)"
name="check<%=x%>"
value="<%=Rs_societe("cle1_cle2")%>">
...

Si tu as laissé maj('check2'), c'est normal que cela ne marche pas : le paramêtre est lui aussi dynamique : tu ne vérifies ainsi que la case que tu viens de cocher ou décocher.

J'espère que ce coup-ci, cela va marcher ...
0

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

Posez votre question
RiKé Messages postés 45 Statut Membre
 
Oui, oui, tout est paramétré dynamiquement...
Vu la vitesse d'execution, il vérifie bien que la checkbox 'active', le probleme est qu'il ne cherche pas à savoir si 'cochée' ou 'non cochée', dans les deux cas, il ne voit que le clic dans la checkbox et incremente 'mon_compte' de +1 meme si j'ai décoché.

function maj(name) {
if (document.nomenc.name.checked = true) {
mon_compte++;
alert ("vous avez choisi " + mon_compte + " societes");
}
else {
mon_compte--;
alert ("Choisi " + mon_compte + " societes");
}
}

<input type="checkbox" onclick="maj('check<%=x%>');" name="check<%=x%>" value=...../....

Malheureusement je ne connais pas le XMLDOM (qu'est-ce?) mais qui sait ? Ce sera un plaisir de te dépanner un jour.
0