Controler le nombre de checkbox cliquees

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

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.