Alle Checkboxes mit einem Klick auswählen

diggity

Erfahrenes Mitglied
Hi Leute!

Hab hier ein Javascript, welches mit alle Checkboxes anhaken soll, wenn ich eine bestimmte anhake. Funktionirt auch, solange sich im Formular über den Checkboxes keine weiteren Formularelemente befinden. Das z.B. funktioniert _nicht_:
HTML:
<? //etwas php code hier ?>
	<script type="text/javascript">
		function checkUncheckAll(theElement) {
			var theForm = theElement.form, z = 0;
			while (theForm[z].type == 'checkbox' && theForm[z].name != 'checkall') {
				theForm[z].checked = theElement.checked;
				z++;
			}
		}
		
		function checkform(form) {
			if (form.vname.value == "") {
				alert("Bitte Formular vollständig ausfüllen!");
				form.vname.focus();
				return false;
			}
		return true;
		}
	</script>
<form action="sites/newsletter.php" method="post" enctype="multipart/form-data" onSubmit="return checkform(this)">
	<table style="width: 60%; border: 0;"  cellspacing="1" cellpadding="1">
    <tr>
        <td style="width: 50%;">Vorname: </td>
		<td style="width: 50%;"><input name="vname" type="text" size="30" /></td>
     </tr>
     <tr>
        <td>Nachname:</td>
		<td><input name="nname" type="text" size="30" /></td>
	</tr>
	<tr>
        <td>e-mail Adresse:</td>
		<td><input name="email" type="text" size="30" /></td>
	</tr>
	<tr>
        <td style="vertical-align:top;"><br />Kategorie:</td>
        <td style="vertical-align:top;"><br />
			<input type="checkbox" name="rad" value="rad" />Radsport<br />
			<input type="checkbox" name="fussball" value="fussball" />Fu&szlig;ball<br />
			<input type="checkbox" name="leichtathletik" value="leichtathletik" />Leichtathletik/Laufsport<br />
			<input type="checkbox" name="ski_alpin" value="ski_alpin" />Ski alpin<br />
			<input type="checkbox" name="ski_nordisch" value="ski_nordisch" />Ski nordisch<br />
			<input type="checkbox" name="tennis" value="tennis" />Tennis<br />
			<input type="checkbox" name="turnen" value="turnen" />Turnen/Volleyball<br />
			<input type="checkbox" name="checkall" onclick="checkUncheckAll(this);" /><strong>Alle</strong><br /><br />
			<input type="submit" name="submit" value="Anmelden!" />
		</td>
	</tr>
    </table>
</form>
<? //etwas php code da ?>

Das wiederum funktioniert, da sind jetzt alle <input>-Felder ausser die Checkboxes entfernt:

HTML:
<? //etwas php code hier ?>
	<script type="text/javascript">
		function checkUncheckAll(theElement) {
			var theForm = theElement.form, z = 0;
			while (theForm[z].type == 'checkbox' && theForm[z].name != 'checkall') {
				theForm[z].checked = theElement.checked;
				z++;
			}
		}
		
		function checkform(form) {
			if (form.vname.value == "") {
				alert("Bitte Formular vollständig ausfüllen!");
				form.vname.focus();
				return false;
			}
		return true;
		}
	</script>
<form action="sites/newsletter.php" method="post" enctype="multipart/form-data" onSubmit="return checkform(this)">
	<table style="width: 60%; border: 0;"  cellspacing="1" cellpadding="1">
    <tr>
        <td style="width: 50%;">Vorname: </td>
		<td style="width: 50%;"></td>
     </tr>
     <tr>
        <td>Nachname:</td>
		<td></td>
	</tr>
	<tr>
        <td>e-mail Adresse:</td>
		<td></td>
	</tr>
	<tr>
        <td style="vertical-align:top;"><br />Kategorie:</td>
        <td style="vertical-align:top;"><br />
			<input type="checkbox" name="rad" value="rad" />Radsport<br />
			<input type="checkbox" name="fussball" value="fussball" />Fu&szlig;ball<br />
			<input type="checkbox" name="leichtathletik" value="leichtathletik" />Leichtathletik/Laufsport<br />
			<input type="checkbox" name="ski_alpin" value="ski_alpin" />Ski alpin<br />
			<input type="checkbox" name="ski_nordisch" value="ski_nordisch" />Ski nordisch<br />
			<input type="checkbox" name="tennis" value="tennis" />Tennis<br />
			<input type="checkbox" name="turnen" value="turnen" />Turnen/Volleyball<br />
			<input type="checkbox" name="checkall" onclick="checkUncheckAll(this);" /><strong>Alle</strong><br /><br />
			<input type="submit" name="submit" value="Anmelden!" />
		</td>
	</tr>
    </table>
</form>
<? //etwas php code da ?>

Was muss ich am Javascript ändern, damit das trotzdem funktioniert?
 
mach doch einfach...

Wenn eine Check-box aktiv ist, dann die anderen check-boxen mit den namen [NamenDerCheckboxenDieAktivSeinSollen] aktiviert werden sollen.
 
Code:
function checkUncheckAll(theElement) 
{
    arrElmts = theElement.form.elements;
    for(e = 0; e < arrElmts.length; ++e)
        {
            if(arrElmts[e].type == 'checkbox' && arrElmts[e] != theElement)
                {
                    arrElmts[e].checked = theElement.checked
                }
        }
}
 
Zurück