Partage

Checkbox : tout cocher / tout décocher

fonctionne presque

Sujet résolu
15 novembre 2009 à 13:17:39

Bonjour,

J'ai un léger problème, je vous montre les codes.

var checkflag = "false";

function checkAllBoxes (fields) {
	if (checkflag == "false") {
		if (fields.length == undefined) {
		fields.checked = true;
		} else {
			for (i = 0; i < fields.length; i++) {
			fields[i].checked = true;
			}
		}
	checkflag = "true";
	return "Tout décocher";
	} else {
		if (fields.length == undefined) {
		fields.checked = false;
		} else {
			for (i = 0; i < fields.length; i++) {
			fields[i].checked = false;
			}
		}
	checkflag = "false";
	return "Tout cocher";
	}
}


<form action="" method="post" id="ok">
<?php
for($i = 0; $i <= 5; $i++) {
echo '<input type="checkbox" name="test['.$i.']" value="test'.$i.'" /> test'.$i.'<br />';
}
echo '<input type="button" value="Tout cocher" onclick= "checkAllBoxes(document.getElementById(\'ok\').elements[\'test[]\'])"> '; 
echo '<a href="#" onclick="ok.submit();">Supprimer les cases cochées</a>';
?>
</form>


Ça fonctionne seulement si j'ai du HTML qui ressemble à ça :

<input type="checkbox" name="test[]"/>


Mais au final j'ai :

<input type="checkbox" name="test[0]"/>
<input type="checkbox" name="test[1]"/>
<!-- etc. -->


C'est-à-dire sans rien entre les crochets []. Mais voilà j'ai besoin d'avoir les valeurs de $i pour le traitement en PHP.

L'erreur de Firebug :

fields is undefined


Si quelqu'un pouvait m'aider ce serait bien. Merci.
15 novembre 2009 à 13:34:41

hello,
perso j'utilise deux fonctions:
function checkAll(){
var coche = document.form.coche;
	var check = document.form.elements["message[]"];
	if(check != null)
	{
		if( coche.checked == true) 
		{
			for( var i = 0 ; i < check.length ; i++)
			{
				check[i].checked = true;
				var tmp = 1;
			}
		}
		else
		{
			for( var i = 0 ; i < check.length ; i++)
			{
				check[i].checked = false;
				var tmp = 1;
			}
	
		}
	}
	else
	{
		return false;
	}
}
function getAllSelect(){
	if( document.form.coche.checked == true ){
			
			document.form.coche.title = "Tout décocher";
	}
	else{
			document.form.coche.title = "Tout cocher";
	}
}

avec un input checkbox: pour controler tous les autres:
<input name="coche" type="checkbox" onmouseover=" getAllSelect()" onclick="checkAll()"  title=""/>

et les checkbox qu'on veut selectionner ou deselectonner
<input name="message[]" type="checkbox" value="<?php echo $i; ?>"  />

si ça peux t'aider
franckysolo
15 novembre 2009 à 13:40:26

Hum je me rends compte que j'ai fait quelque chose de totalement inutile.

Le JS est bon. Mais le HTML, je n'ai pas besoin de faire :

<?php
echo '<input type="checkbox" name="test['.$i.']" value="test'.$i.'" /> test'.$i.'<br />';
?>


Car en fait le :

<?php
echo '<input type="checkbox" name="test[]" value="test'.$i.'" /> test'.$i.'<br />';
?>


Marche tout aussi bien. Désolé...


Checkbox : tout cocher / tout décocher

× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
  • Editeur
  • Markdown