stefan(klein geschrieben): checkboxabfrage (min. 1 is checked)

hi leute,

ja, ja is wo.ende aber mich nervt es. folgendes prob..

form-überprüfung.
da fehlt mir ein denkanstoss.
habe 4 checkboxen, min. eine soll checked sein sonst alert.
nur wie machen weil"" geht ja nicht.

dank euch stefan(der immer alles klein schreibt)

  1. Hallo stefan (<-- klein geschrieben)!

    habe 4 checkboxen, min. eine soll checked sein sonst alert.
    nur wie machen weil"" geht ja nicht.

    Schau mal auf http://www.atomic-eggs.com/feedback/feedback.html, ob Du den Code ausschlachten und etwas für Dich gebrauchen kannst.

    Dort wird, wenn man eine Radiobox wählt, automatisch die Checkbox für die gewünschte Seite angekreuzt (das hatte ich damals noch alleine hinbekommen) - aber wenn man eine Checkbox ankreuzt, ohne eine der 5 Radioboxen des jeweiligen Bereichs zu wählen, kommt später beim Absenden ein Alert (da hatte mir Calocybe geholfen).

    Vielleicht kommt das dem, was Du brauchst, am nächsten.

    Bis danndann
    PAF (patrickausfrankfurt)

    <img src="/selfaktuell/extras/selfcomm.jpg" alt=""> http://www.atomic-eggs.com/selfspezial/guests/advguest.cgi?view

    <img src="http://www.atomic-eggs.com/selfspezial/atomicegg.gif" id="ei" alt="Atomic Eggs - die humosophische Seite" onMouseUp="window.location.href='http://www.atomic-eggs.com/'" onmouseover="if(document.all)document.all.ei.style.cursor='hand';status='http://www.atomic-eggs.com/';return true;" onmouseout="status='';return true;">

  2. Hallo!

    Ich mußt selbst erstmal wieder kurz überlegen! :-)

    habe 4 checkboxen, min. eine soll checked sein sonst alert.
    nur wie machen weil"" geht ja nicht.

    Ist eine der vier Boxen ausgewählt, gibt es ein "return true" und das Script wird abgesendet. Ansonsten gibt es nach den Schleife eine alert() mit einem "return false" und das Absenden wird abgebrochen.

    function formtest()
    {
      for(var i = 0; i <= 3; i++)
       {
        if(document.formular.zutaten[i].checked == true) { return true; )
       }
       alert("Bitte etwas auswählen"); return false;

    }

    <form name="formular" action="script.pl" method="post" onsubmit="return formtest();">
    <input type=checkbox name="zutat" value="salami">
    <input type=checkbox name="zutat" value="kaese">
    <input type=checkbox name="zutat" value="schrimps">
    <input type=checkbox name="zutat" value="tomaten">
    <input name="submit" value="Abschicken">

    MfG, André Laugks

    1. Hi!

      vielleicht könnte man noch

      function formtest()
      {
        for(var i = 0; i < document.formular.zutat.length; i++)
         {
          if(document.formular.zutat[i].checked == true) { return true; }
         }
         alert("Bitte etwas auswählen"); return false;

      }

      daraus machen, dann kannst du so viele checkboxen im Formular haben, wie du willst, und du musst das Javascript nicht mehr anfassen.

      Gruß
      Cruz

  3. Moin stefan,

    klar geht das mit und zwar:

    if( ! (    document.DeinFormular.DeineCheckbox[0].checked
             document.DeinFormular.DeineCheckbox[1].checked
             document.DeinFormular.DeineCheckbox[2].checked
             document.DeinFormular.DeineCheckbox[3].checked
          )
      )
      alert(" ein häkchen muss sein");

    also: wenn nicht (eins oder zwei oder drei oder vier ) angekreuzt ist dann
    gebe eine Meldung aus

    oder (ohne , dafür mit && )

    if(    ! document.DeinFormular.DeineCheckbox[0].checked
        && ! document.DeinFormular.DeineCheckbox[1].checked
        && ! document.DeinFormular.DeineCheckbox[2].checked
        && ! document.DeinFormular.DeineCheckbox[3].checked  
      )
      alert(" ein häkchen muss sein");

    also: wenn eins nicht an ist und zwei nicht an ist und drei nicht an ist und
    vier nicht an ist, dann Meldung.

    Diese Umwandlung geht immer und heisst nach einem gewissenen de Morgan.
    Eine elementare Methode beim Vereinfachen von logischen Gleichungen.
    (Hier hast du z.b. einmal 4 und einmal 7 Operatoren.)
    Aber so genau wolltest du das wahrscheinlich gar nicht wissen....

    Gruss,
    Carsten