Controler le nombre de checkbox cliquees

Soyez le premier à donner votre avis sur cette source.

Snippet vu 24 233 fois - Téléchargée 27 fois

Contenu du snippet

Pour expliquer ce code, je vais prendre un exemple:
Il y a des checkbox dans un formulaire, et vous ne voulez pas que l'utilisteur coche plus de X checkbox.
Cette source permet de controler qu'il n'en clique pas plus, et de transférer ce qu'il a cliqué à un script php.

Source / Exemple :


<script language="javascript">
<!--
//nb max de choix possible
var nbre_max=3;
var nbre=0;
var url = new Array(nbre_max+1);
function checkbox(num){
	if((document.form.list_check[num].checked)==true){
		nbre++;
	} else {
		nbre--;
	}
	if(nbre > nbre_max){
		alert('Pas plus de 3 ateliers !');
		document.form.list_check[num].checked=false;
		nbre--;
	}
}
function verif(){
	if(nbre==0) {
		alert('Choisis un checkbox !');
		document.form.list_check[0].focus();
	} else {
		for(y=0; y<document.form.list_check.length; y++){
			if(document.form.list_check[y].checked == true){
				str = str + "&check[]=" + y;	
			}
		}
		str=str.substring(1,str.length);
		document.form.action = "action.php?" + str;
		document.form.submit();
	}
}
//-->
</script>
<!-- ... //-->
<form name="form" method="POST">
<input type="checkbox" name="list_check" value="0" OnClick="checkbox(0);" />1er choix
<input type="checkbox" name="list_check" value="1" OnClick="checkbox(1);" />2eme choix
<input type="checkbox" name="list_check" value="2" OnClick="checkbox(2);" />3eme choix
<input type="checkbox" name="list_check" value="4" OnClick="checkbox(4);" />4eme choix
<!-- ... //-->
</form>

//pour récupérer les données (action.php):
<?php
$array=array('1er choix','2eme choix','3eme choix','4eme choix','...');
$passage=$_GET['check'];
for($i=0;$i<count($check);$i++){
    $check[$i]=$array[$passage[$i]];
}
?>

Conclusion :


Et voilà.
la variable $check dans le code PHP contiendra (p.ex):
0 => '1er choix';
1 => '3eme choix';
2 => '4eme choix';
...

Je sais que cette source est aussi du PHP, mais le coeur (les checkbox) est en javascript. De plus, vous pouvez toujours récupérer le tableau de variables avec Javascript ou avec un autre langage (ASP ...) .

A voir également

Ajouter un commentaire

Commentaires

Mingain
Messages postés
44
Date d'inscription
mercredi 16 juin 2004
Statut
Membre
Dernière intervention
24 février 2006
-
Bonjour,

le code me renvoie l'erreur "'documen.form.list_check[...].checked' a la valeur Null ou n'est pas un objet."

Comment faire ?

A bientôt ;-)
kangun
Messages postés
22
Date d'inscription
mardi 7 janvier 2003
Statut
Membre
Dernière intervention
11 avril 2010
-
merci bien pour ce petit script, il m'a en quelque sorte sauvé ;-)
monsieurzouzou
Messages postés
14
Date d'inscription
jeudi 10 mars 2005
Statut
Membre
Dernière intervention
17 mai 2007
-
bonjour,

meme erreur que Mingain: "'document.form.list_check[...].checked' a la valeur Null ou n'est pas un objet."

snif en plus c'est le seul script du net qui correspond à ce que veux exactement...j'ai plus qu'à apprendre le javascript, ouinnnnnnnnn j'en ai pour des mois...
monsieurzouzou
Messages postés
14
Date d'inscription
jeudi 10 mars 2005
Statut
Membre
Dernière intervention
17 mai 2007
-
bon ben finalement j'en ai trouvé un autre sur http://www.js-examples.com/, qui marche (énorme merci à eux :); la saisie est ici limitée à 2 checkbox:

<script type="text/javascript" language="JavaScript">
var MAX_ALLOWED=2;
var clickedData=new Array(false,false,false,false);
function itemsClicked(){var i=0;for(var j=0;j<clickedData.length;j++)i+=clickedData[j]?1:0;return(i);}
function itemClicked(_v)
{
var ALLOW_THIS=true;
var x=itemsClicked();
if (x>=MAX_ALLOWED && !clickedData[_v])
{
ALLOW_THIS=false;
}
else
{
clickedData[_v]=clickedData[_v]?false:true;
eval("document.formulaire.r"+_v+".clicked=false;");
}
return (ALLOW_THIS); /* kill the event handler */

}
</script>
</head>


<form name="formulaire">
Case 1
Case 2
Case 3
Case 4
</form>
lucky10g
Messages postés
8
Date d'inscription
dimanche 21 janvier 2007
Statut
Membre
Dernière intervention
17 octobre 2008
-
Salut !
Monzieurzouzou ton script marche parfaitement
Maintenant quelqu'un peut me dire comment recevoir les variables ?
Merci a+

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.