Björn Weichel: Checkbox`en überprüfen

Ich hänge nun bereits seit einer Stunden an einer total simplen Sache, aber ich peil`s einfach nicht... javascript geht irgendwie nie...

Also ich habe zwei HTML Checkbox`en und möchte mit JavaScript überprüfen ob mindestens eine davon angehakt ist. Wenn nicht soll eine entsprechende Meldung kommen...

Hier meine Checkbox`en
<input type="checkbox" value="1" name="gruppe[eins]" checked>Eins
<input type="checkbox" value="2" name="gruppe[zwie]" checked>Zwei

Dann lautet doch die Abfrage:
if(document.Formular.gruppe[eins].checked == false && document.Formular.gruppe[eins].checked == false) {
   alert("Falsch");
}

oder? Es geht auf jedenfall nicht...
Ich bin am verzweifeln...

  1. Der Interpreter wird wohl denken, du willst mit gruppe[eins] ein array ansprechen. Versuch mal gruppe_eins, damit müsste es gehen.

    Verwende am besten einen Debugger, z.B. Firebug, das hilft enorm bei der Fehlersuche.

  2. Hallo Björn,

    <input type="checkbox" value="1" name="gruppe[eins]" checked>Eins
    <input type="checkbox" value="2" name="gruppe[zwie]" checked>Zwei

    wenn du die Formularelemente mit Javascript ansprechen willst, ist es immer etwas problematisch, wenn im Namen irgendwelche Sonderzeichen vorkommen. In deinem Beispiel lautet der NAME der ersten Checkbox "gruppe[eins]", die eckigen Klammern haben für Javascript in diesem Fall keine besondere Bedeutung.

    Dann lautet doch die Abfrage:
    if(document.Formular.gruppe[eins].checked == false

    Nein. Damit versucht Javascript, ein Array mit dem Namen "gruppe" anzusprechen, und daraus das Element rauszupicken, das durch die Variable eins indiziert wird. Das ist Mumpitz.

    Das beste wäre in deinem Fall, die Namen der Felder zu ändern, so dass sie nur unverfängliche Zeichen wie Buchstaben und eventuell Ziffern enthalten. Aber wenn du die Namen schon so lassen willst, musst du das Adressierungsschema ändern in
       document.Formular["gruppe[eins]"].checked

    Übrigens wirkt die Abrfrage von boolschen Werten mit dem Vergleich auf ==false immer etwas unbeholfen. Warum nicht kürzer und verständlicher:

    if (!document.Formular["gruppe[eins]"].checked && ... )

    Das ist vielleicht Geschmackssache, aber ich finde, das liest sich viel leichter.

    So long,
     Martin

    PS: Nimm's mir bitte nicht übel, aber ich habe deinen Namen beim ersten Hinsehen als "Björn Weichei" gelesen ...  ;-)

    --
    Alkohl ist ungesund,
    Rauchen ist schädlich,
    Sex ist unanständig
    - und die Erde ist eine flache Scheibe.
  3. Hallo Björn,

    Hier meine Checkbox`en

    Der Akzent hat da nichts zu suchen.

    Es geht auf jedenfall nicht...
    Ich bin am verzweifeln...

    Ich würde den Checkboxen einfach eine Id geben (die brauchst du eh, wenn du mit <label> eine Beschriftung zuweisen willst). Dann kannst du über document.getElementById("deine_id").checked den Status abfragen.

    Jonathan