Martin: Formularüberprüfung von mehr als einer Checkbox

Hallo,

ich möchte in einem Formular mit Hilfe von Checkboxen eine Abstimmung durchführen mit der Maßgabe, dass von z.B. 6 Checkboxen beliebige 3 angeklickt sein müssen.
Bei meinem Versuchen ist es mir zwar gelungen, eine Checkbox abzufragen und entsprechend dem Status "richtig" oder "falsch" das entsprechende Ergebnis zu erhalten. Aber bei dreien hakt es eben aus, was wohl auch an meinen bescheidenen JavaScript Kenntnissen liegt :-) Ich bin daher um jede Hilfe dankbar.

Viele Grüße, Martin

  1. ich möchte in einem Formular mit Hilfe von Checkboxen eine Abstimmung durchführen mit der Maßgabe, dass von z.B. 6 Checkboxen beliebige 3 angeklickt sein müssen.
    Bei meinem Versuchen ist es mir zwar gelungen, eine Checkbox abzufragen und entsprechend dem Status "richtig" oder "falsch" das entsprechende Ergebnis zu erhalten. Aber bei dreien hakt es eben aus, was wohl auch an meinen bescheidenen JavaScript Kenntnissen liegt :-) Ich bin daher um jede Hilfe dankbar.

    Hi Martin!

    Hm, da Du Deinen JS-Code leider nicht mitgepostet hast kann ich Dir nich direkt helfen. Aber normalerweise sollte es keine Probleme geben, wenn Du wie folgt vorgehst: http://www.teamone.de/selfhtml/tecbbda.htm#a2

    Gruß, Jan.
    www.Planet-1.de

    1. Hallo Jan,

      vielen Dank für Deine Antwort; hier erstmal mein bisheriges Listing:

      <html>
      <head>
      <title>Auswahl</title>

      <script language="JavaScript">

      function CheckDieBoxen()
      {
      if(document.auswahl.Box[0].checked == true)
         return true;
      else
      {
         alert ("keine 3 angekreuzt");
         return false;
      }
      }
      </script>
      </head>

      <body>
      <form name="auswahl" method="post" action="cgi-bin/formmail.pl" onSubmit="return CheckDieBoxen()">
        <p>
          <input type="checkbox" name="Box" value="1">
          Box1
          <input type="checkbox" name="Box" value="1">
          Box2
          <input type="checkbox" name="Box" value="1">
          Box3 </p>
        <p>
          <input type="checkbox" name="Box" value="1">
          Box4
          <input type="checkbox" name="Box5 value="1">
          Box5
          <input type="checkbox" name="Box" value="1">
          Box6</p>
        <p>
          <input type="submit" name="Abschicken" value="Abschicken">
        </p>
      </form>
      </body>
      </html>

      Der Knackpunkt ist wohl, den Wert der Checkboxen abzufragen. Wenn ich es mit "value == 1" mache, wird die Schleife immer als richtig gewertet, egal ob eine Box angeklickt ist, oder nicht :-( Ich dachte halt, es wäre das einfachste, wenn mit jeder angeklickten Checkbox ein bestimmter Wert übergeben wird (also meinetwegen 3 x "1") sich daraus eine Bedingung ableiten lässt nach dem Motto: wenn der wert = 3 dann gehe weiter, sonst eben die alertbox. Mein Gedanke war eben, dass sich dies wohl mit einer Gruppe/Array realisieren lassen müsste?
      Aber vielleicht liege ich da auch ganz falsch?

      Viele Grüße und nochmal Danke für Deine prompte Antwort,
      Martin

      ich möchte in einem Formular mit Hilfe von Checkboxen eine Abstimmung durchführen mit der Maßgabe, dass von z.B. 6 Checkboxen beliebige 3 angeklickt sein müssen.
      Bei meinem Versuchen ist es mir zwar gelungen, eine Checkbox abzufragen und entsprechend dem Status "richtig" oder "falsch" das entsprechende Ergebnis zu erhalten. Aber bei dreien hakt es eben aus, was wohl auch an meinen bescheidenen JavaScript Kenntnissen liegt :-) Ich bin daher um jede Hilfe dankbar.

      Hi Martin!

      Hm, da Du Deinen JS-Code leider nicht mitgepostet hast kann ich Dir nich direkt helfen. Aber normalerweise sollte es keine Probleme geben, wenn Du wie folgt vorgehst: http://www.teamone.de/selfhtml/tecbbda.htm#a2

      Gruß, Jan.
      www.Planet-1.de

      1. Der Knackpunkt ist wohl, den Wert der Checkboxen abzufragen. Wenn ich es mit "value == 1" mache, wird die Schleife immer als richtig gewertet, egal ob eine Box angeklickt ist, oder nicht :-( Ich dachte halt, es wäre das einfachste, wenn mit jeder angeklickten Checkbox ein bestimmter Wert übergeben wird (also meinetwegen 3 x "1") sich daraus eine Bedingung ableiten lässt nach dem Motto: wenn der wert = 3 dann gehe weiter, sonst eben die alertbox. Mein Gedanke war eben, dass sich dies wohl mit einer Gruppe/Array realisieren lassen müsste?
        Aber vielleicht liege ich da auch ganz falsch?

        Also da is n kleiner Fehler drin :). Die Checkboxen dürfen nicht alle gleich heißen. Und der Wert wird bei einer Mehrfachauswahl auch nicht automatisch bzw. gar nicht addiert :).

        Also ich würds so machen :):

        <html>
        <head>
        <title>Auswahl</title>

        <script language="JavaScript">

        function CheckDieBoxen()
        {
          var x=0;
          for(i = 0; i <= 5 ; i++)
          {
            if (document.auswahl.elements[i].checked == true)
            {
              x++;
            }
          }
          if (x>=3)
          {
            return true;
          }
          else
          {
            alert ("keine 3 angekreuzt");
            return false;
          }
        }
        </script>
        </head>

        <body>
        <form name="auswahl" method="post" action="cgi-bin/formmail.pl" onSubmit="return CheckDieBoxen()">
          <p>
            <input type="checkbox" name="Box1">
            Box1
            <input type="checkbox" name="Box2">
            Box2
            <input type="checkbox" name="Box3">
            Box3 </p>
          <p>
            <input type="checkbox" name="Box4">
            Box4
            <input type="checkbox" name="Box5">
            Box5
            <input type="checkbox" name="Box6">
            Box6</p>
          <p>
            <input type=submit name="Abschicken" value="Abschicken">
          </p>
        </form>
        </body>
        </html>

        Gruß, Jan.
        www.planet-1.de