Ckeckboxen zählen.

visiondpc

Erfahrenes Mitglied
Hallo, ich würde gerne die Anzahl der dynamisch erzeugten Checkboxen in einem Formular mittels JavaScript erhalten.
Mein Ansatz schaut so aus:

HTML:
<div><input id="folders[]" type="checkbox"  value="17" /></div>
<div><input id="folders[]" type="checkbox"  value="39" /></div>
...

Code:
...
n = document.getElementById('folders').length;
...

Das bringt mir allerdings nur die Meldung, dass document.getElementById("folders") keine properties hat.Könnte mir da jemand auf die Sprünge helfen?
 
Ich geh jetzt einfach mal davon aus, dass du die Checkboxen mit PHP generierst...
Lass doch dabei gleich einen Counter mitlaufen, der dann die Anzahl der Checkboxen in eine Variable speichert und z.B. so speichert...
PHP:
echo"<input type=\"hidden\" name=\"checkb_zahl\" value=".$counter_checkb.">";
Kannst ja dann mit Javascript einlesen.
Code:
var checkboxen = document.getElementById['checkb_zahl'].value;

Gruß!
 
Zuletzt bearbeitet:
Danke für den Tipp, aber das will irgendwie nicht so ganz. Das Problem ist, dass ich die Values mehrerer Checkboxen irgendwie mittels AJAX übergeben muss.
Ich hab die Checkboxen jetzt die id's boc0 - box... gegeben. In $fcounter steht die Anzahl der Checkboxen.

Code:
for(i=0;i<$fcounter;i++)
		{
			if(document.getElementById('box' + i).checked==true)
			{
				boxes += "&box[]=" + document.getElementById('box' + i).value;
			}
		}
		request.send('action=wr_list' + boxes);

Jetzt scheitert es aber an der meldung, dass "box" + i nicht existieren würde. Ich verstehe nicht warum das nicht als ein String erkannt wird.
 
Versuch es mal mit
Code:
			if(document.getElementById['box'+i].checked==true)
			{
				boxes += "&box[]=" + document.getElementById['box'+i].value;
			}

*edit:
Nur versteh ich nicht ganz, wie du deine Variable "boxes[]", dann wieder mit PHP auffängst?
So würde ja deine Variable beispielsweise am Ende so aussehen...:
"&box[]=1&box[]=2&box[]=3&box[]=4&box[]=5..." usw. Vielleicht wäre es besser jeder box noch die ID mit dazu zu geben!

Bsp.:
Code:
for(i=0;i<$fcounter;i++)
		{
			if(document.getElementById['box'+i].checked==true)
			{
				boxes += "&box["+i+"]=" + document.getElementById['box'+i].value;
			}
		}
                                boxes += "&counter="+fcounter;
		request.send('action=wr_list' + boxes);

Somit kannst du auf der anderen Seite alles auffangen und dort eine weitere Schleife erstellen, die so oft wie in "&counter" steht, durchgehen und dann vergleichen. z.B. so:
Code:
if(isset($_GET['box'.$i])){...
 
Zuletzt bearbeitet:
Ganz genau

<div><input id="box0" type="checkbox" value="12" /></div>
<div><input id="box1" type="checkbox" value="59" /></div>
 
Die ist im JavaScript. Sorry. Das ganze wird ja nochmal durchgeparst.
Im Original siehts natürlich so aus:
for(i=0;i<2;i++)
 
Ok...
Ich weiß nicht warum aber so sollte es auf jeden Fall funktionieren!

Erstelle, sofern du nicht schon hast, deine Checkboxen innerhalb eines "<form>"
z.B.
Code:
<form action="#" method="GET" name="checkboxform">
<div><input name="box" type="checkbox" value="12" /></div>
<div><input name="box" type="checkbox" value="59" /></div>
...
</form>

Jetzt kannst du die checkboxen so aufrufen:
Code:
if(document.checkboxform.box[i].checked==true)

In diesem Fall fängt die erste Checkbox (mit value=12) mit 0, wie bei einem Array, an!
Sprich bei:
Code:
alert(document.checkboxform.box[0].value);
würde der Wert 12 ausgeliefert werden! Gruß!
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück