Javascript: tester les cases a cocher

Fermé
karimMokobe - 12 août 2003 à 14:29
 sim - 6 janv. 2013 à 16:03
Bonjour,
voila j 'ai un forumulaire

comportant un nombre variable de lignes avec des cases a cocher (variable car resultat d'une requete SQL sur BD)

J aimerais donc tester si au moins une de toutes les case a cocher a été coché (c pour éviter que le forumulaire soit envoye alors que rien ne fut coché)

Donc cmt faire cela en javascript pr avoir accéder au tableau des cases d'1 formulaire donné et de tester si ils ont été cochés)

merci d av!

17 réponses

Test pour voir si au moins une case a été cochée

function <FunctionName>()
{		
	var i = 0;
	var COCHE = false;
		
	for (i=0;i< document.getElementsByName(<CheckboxName>).length;i++)
	{
		if(document.getElementsByName(<CheckboxName>).item(i).checked)
		{
			COCHE = true;
			break;
		}
	}
	
	if(COCHE)
		alert("Au moins une case cochée");
	else
		alert("Pas de case cochée");
}
Bonjour Neon,
Par rapport à ta solution, les name="" de tes checkboxs doivent-ils être tous différents ? ou est-ce que ça peut être name="reponse[]", sous forme de tableau ?

Dans mon cas, j'aimerai vérifier que au moins une Cbx ai bien été cochée en javascript en utilisant name="reponse[]", car ensuite j'utilise php et mysql pour stocker les valeurs de mon tableaux...
Mais je ne sais pas si c'est réalisable !

ps : j'ai essayé ta soluc avec les 2 façon d'écrire le name, mais ça ne fonctionne pas chez moi. J'ai surement un bug qq part. Ta réponse m'aiderai à creuser au bon endroit

D'avance merci
0
steelspirit Messages postés 277 Date d'inscription lundi 12 mai 2003 Statut Membre Dernière intervention 22 octobre 2008 80
12 août 2003 à 14:40
Salut,
Mon premier reflexe serait de tester chaque case et regarder si il est pas coché ... le code serait alors :
<script language="javascript">
<!--
function donneavis()
{
if ((document.forms[0].elements[0].checked==false) && (document.forms[0].elements[1].checked==false) && (document.forms[0].elements[2].checked==false) etc .... )
{
alert("Votre avis, Merci");
return false;
}
return true;
}
//-->
</script>

ceci marche à condition que elements[0] qui est le premier élément de ton formulaire soit une check box si c pas le cas regarde a quel numéro ton premier checkbox se place.

puis ensuite dans ton form :
<form method=post action="http://www.votresite.com/cgi/votreform.cgi" name="formulaire" OnSubmit="return donneavis()">


je sais pas si c tres clair mon affaire la ...

- T'as pas vu Chloraine ?
- C'est qui Chloraine ? - Ah ! Ah ! Ah !
steelspirit Messages postés 277 Date d'inscription lundi 12 mai 2003 Statut Membre Dernière intervention 22 octobre 2008 80
12 août 2003 à 15:06
POUR OMAR :
non bah c pas tres difficile en fait !
Une fois que tu as fait ta requete, tu compte le nombre de ligne (et donc le nombre de checkbox) et tu le passe en parametre lors de l'appel de ta fonction :
par exemple si tu as 5 checkbox tu fais :
<form method=post action="http://www.votresite.com/cgi/votreform.cgi" name="formulaire" OnSubmit="return donneavis(5)">

ensuite dans la fonction :

<script language="javascript">
<!--
function donneavis(val)
{
var i;
for (i=0;i<val;i++)
{
if ((document.forms[0].elements[i].checked==true)
{
return true;
}
}
alert('donner votre avis');
return false;
}
//-->
</script>



et voila !!!

- T'as pas vu Chloraine ?
- C'est qui Chloraine ? - Ah ! Ah ! Ah !
Merci steelspirit mais justement ca j arrive àfaire a savoir tester chaque case mais le pb est que comme j ai dit en haut j'ai
1 nombre variable de lignes avec des cases a cocher 


ca signifie que selon le tat de la BD j auraisd une fois
-5 lignes dc 5 cases a coche
-une fois 3 cases a cocher car 3 lignes

Donc tester chaque ligne en dur c pas possible mais il me semble que c possible via un tableau mais cmt..?

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

Posez votre question
steelspirit Messages postés 277 Date d'inscription lundi 12 mai 2003 Statut Membre Dernière intervention 22 octobre 2008 80
13 août 2003 à 09:52
salut omar,
ta fonction Marden te la donne juste au dessus :

document.formName.radioName.length


- T'as pas vu Chloraine ?
- C'est qui Chloraine ? - Ah ! Ah ! Ah !
n@n¤u Messages postés 195 Date d'inscription mardi 30 septembre 2003 Statut Membre Dernière intervention 24 octobre 2008 10
30 oct. 2003 à 11:32
slt,
je crois que j'ai la solution a ton problème...
voici une fonction qui "semble" marcher:

function checkbox_selected(form)
{
	for (i=0, n=form.elements.length; i<n; i++)
	{
		if ((form.elements[i].checked == true))
		return true;
	}
	
	alert("Cochez une case.");
	return false;

}


et dans ton bouton pour valider tu mets:
<INPUT type="submit" value="Valider" onclick='checkbox_selected(this.form)' >


cette fonction est dynamique en fonction du nbre de checkbox

De nada amigos!
(@_@)
//Fonction qui verifie s'il y a au moins nb_mini case coché
function cbox_coches(obj_form, nb_mini)
{
var i;
var obj_input;
var nb_coche = 0;
for (i = 0; i < obj_form.elements.length; i++)
{
obj_input = obj_form.elements[i];
if( obj_input.type=="checkbox") // on teste si CheckBox
{
if( obj_input.checked)
nb_coche ++;
}
}
return (nb_coche >= nb_mini);
}
@benjarobin

Merci !
Ta solution fonctionne parfairement bien :)
Et ca fonctionne même losqu'on nomme nos checkox de la sorte "nom_de_la_checkbox[]" :)
0
Et bien j ai trouvé un truc sur google mais ca marche pas:

il m affiche "undefined"

<html><head>
</head>
<!--debut-->
<body><br><br><br>
<!--le formulaire de saisie-->

<FORM  name ="omar" METHOD="post" ACTION="addPassp">
<input type="hidden" name="numb" value="RRR">
<input type="hidden" name="niveau" value="RRR"><b>Etape 1: Ajout d'un passe</b>
<b> partiel</b>
<hr>
<br>
<input type="checkbox" name="C1" value="ON">        
<p> <input type="checkbox" name="C2" value="ON">         </p>
<p><input type="checkbox" name="C3" value="ON">         </p>
<p><input type="checkbox" name="C4" value="ON">
                   

<br><br>
<INPUT onclick=verifForm(this.form) type=button value=Envoyer 
style="background-color: #D2E9FF">
<input type="reset" value="Recommencer"
style="background-color: #D2E9FF">
</p>
</form>

<SCRIPT language=JavaScript> 
document.writeln("il ya "+document.omar.lenght+"checkbox");
</script>

<p><font size="1">*champs obligatoires</font>
<p> </p></body></html>
steelspirit Messages postés 277 Date d'inscription lundi 12 mai 2003 Statut Membre Dernière intervention 22 octobre 2008 80
12 août 2003 à 15:25
il y a une faute a lenght ! ça s'écrit length

- T'as pas vu Chloraine ?
- C'est qui Chloraine ? - Ah ! Ah ! Ah !
0
Marden Messages postés 1072 Date d'inscription dimanche 11 février 2001 Statut Membre Dernière intervention 29 janvier 2006 208
12 août 2003 à 16:32
Salut à vous,

Il y a sans doute des informations à récupérer via :
document.{formName}.{radioName}.length
Salut, le code suivant
document.formName.radioName.length


ne marche pas.

Ja i tapé ceci :
alert(form.p1.length);

et les message es "undefined"

d ailleurs je vois pas cmt ce bt de code marcherait puisque si
je l analyses lexicigraohiquement il donnerait la longeur d'un bouton radio donnée du formulaire x du document en cours.

or je veux connaitre le nb total de bouton radios du formulaire! c différent
PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
30 oct. 2003 à 16:08
Bjr,

"Think different" comme ils disent ...

Et ca donne :

<html>
<head>
<script type="text/javascript">
<!--

function tst_cbx()
{
	// On peut aussi utiliser : ref=document.getElementById('demo');
	ref=document.forms['demo'];
	result=false;
	for (i=0; i<ref.cbx.length; i++)
	{
		if (ref.cbx[i].checked) 
		{
			result=true;
			break;
		}
		
	}

	alert((result) ? "Ok":"Cochez au moins une case SVP !");
}
//-->
</script>

</head>
<body>

<form id="demo" name="demo">
<input type="checkbox" name="cbx"></p>         
<input type="checkbox" name="cbx"></p>
<input type="checkbox" name="cbx"></p>
<input type="checkbox" name="cbx"></p>
               
<input type="button" value="Ok" onclick="tst_cbx()">    
</form>
</body>
</html>


@+

PhP    [Push the button,Don't push the
.         button,Trip the station,Change the channel]
akoubi zied
21 mai 2011 à 06:09
great thexxxxxxx
0
Pour info, "document.formName.radioName.length" donne "undefined" lorsqu'il n'y a qu'un seul bouton radio.
il faut tester sur
document.formName.radioName.nodeName

s'il n'y en a qu'un, ça renvoie INPUT
s'il y en a plusieurs, ça renvoie undefined

Cdlt
Merci a tous mais ce n est pas fini malheureusement car le nb de CASES A COCHER est variable!!!! j ai donc encore besoin :
d1 fonction qui pr 1 formulaire donné me retourne le nb de cases a cocher de ce formulaire
PhP, ton code marche, mais comment fais tu pour récupérer les valeurs de "cbx" sur la page suivante ? chaque checkbox ayant le meme nom ?
Et oui Azazel !!!

Je suis dans le même cas. C'est bien bo tout ca, mais pour envoyer la valeur des cases à cocher en php, il faut utiliser cbx[], et la du coup javascript ne marche plus.

Est ce quelqu'un aurait une idée, svp ?

<?php echo "<pre>Value : ",$_POST['cbx'],"</pre>"; ?>

<form id="demo" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
     <p><label>case 1 : </label><input type="checkbox" id="cbx1"  name="cbx[]" value="1"/></p>
     <p><label>case 1 : </label><input type="checkbox" id="cbx2" name="cbx[]" value="2"/></p>
     <p><label>case 1 : </label><input type="checkbox" id="cbx3" name="cbx[]" value="3"/></p>
     <p><input type="submit" value="Ok" onclick="tst_cbx()" /></p>
</form>
Si tu veux absolument vérifier par Javascript tes cases à cocher il ne faut pas les nommer cbx[], mais leur donner un nom différent pour chacune.

Tu me diras, je ne peux pas, car leur nombre peut être variable !

Alors au moment de la création de ton formulaire tu crée les noms dynamiquement avec des indices cbx1 cbx2 etc;

Comment:
for($i=1;$i<$ta_limite,$i++){
   $nom_cbx="cbx".$i;

<?
<input type="checkbox" name="<?php echo $nom_cbx ; ?>" value="....">xxxxxxx

<?php

}


ensuite pour les récupérer page suivante, tu explore l'array $_POST par une boucle et avec un test substr($_POST,0,3)=="cbx" pour empiler les valeurs de toutes tes checkbox dans un array ou autre.
sniperrricko
27 nov. 2008 à 17:11
Salut Alain,

Le code pour tester les checkbox n'a vraiment dépanner mais voilà je ne perçois pas encore comment écrire la boucle contenant le test substr($_POST,0,3)=="cbx" car si je me comprend bien, il n'y a pas de Array poster par le formulaire vu que nous avons donner des noms par incrémentation de la variable $i aux différentes case à cocher.
Merci d'éclairer ma lanterne.
0
sniperrricko
27 nov. 2008 à 17:19
Salut Alain,

Le code pour tester les checkbox m'a vraiment dépanné mais voilà je ne perçois pas encore comment écrire la boucle contenant le test substr($_POST,0,3)=="cbx" car si je me comprend bien, il n'y a pas de Array poster par le formulaire vu que nous avons donner des noms par incrémentation de la variable $i aux différentes case à cocher.
Merci d'éclairer ma lanterne.
0