checkboxen zählen

südpol

Erfahrenes Mitglied
Hi,

ich habe hier ein aus einer Datenbank generiertes Formular, welches u. a. Checkboxen beinhaltet. Ich will nun vor dem senden überprüfen ob davon min. eines ausgewählt ist. Um jedoch alle boxen (die von 1 bis n gehen können) durchlaufen zu können muss ich wissen wie viele es insgesamt sind. Leider konnte ich keine funktion wie length für checkboxen finden um diese zu zählen. Gibt es hier eine javascript basierte Möglichkeit diese boxen zu zählen?

formular sieht z. B. so aus:

Code:
<form name="form" onsubmit="return checkform('bitte alle felder ausfüllen');">
  <input type="checkbox" name="phases[]" value="1">test1</input><br />
  <input type="checkbox" name="phases[]" value="2">test2</input><br />
  <input type="checkbox" name="phases[]" value="3">test3</input><br />
  <input type="checkbox" name="phases[]" value="4">test4</input><br />
  <input type="checkbox" name="phases[]" value="5">test5</input><br />
  <input type="submit" value="klick mich" />
</form>

ich habe mir jetzt schon über google die Finger wund gesucht aber nichts in die Richtung gefunden - wenn jemand bessere Schlagworte im Kopf hat nehme ich auch gerne einen Link :D

Gruß
 
Ich schon wieder:)

Wenn du mehrere Checkboxen mit selbem Namen hast, kannst du deren Anzahl per
Code:
document.formularName.elements['checkboxname'].length
(die eckigen Klammer müssen bei "checkboxname" mit hinein, falls vorhanden)
ermitteln.

Andernfalls... durchlaufe alle Formularelemente.... ist bei einem der type "checkbox" und die checked-Eigenschaft "true", kannst du ein "return true" absetzen.
 
ach du schon wieder :D

hmm stimmt dieses elements zeugs mit den eckigen Klammern hast du mir schon mal erklärt - langsam kommts wieder...

Ich habe jetzt mal folgendes Testscript erstellt:

Code:
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
 <title>Test</title>
 <script type="text/javascript">
  function checkForm(msg) {  
   var f = document.form
   alert(f.elements['phases[]'].length)
  }
 </script>
</head>
<body>
        
<form name="form" onsubmit="return checkform('test');">
  <input type="checkbox" name="phases[]" value="1">test1</input><br />
  <input type="checkbox" name="phases[]" value="2">test2</input><br />
  <input type="checkbox" name="phases[]" value="3">test3</input><br />
  <input type="checkbox" name="phases[]" value="4">test4</input><br />
  <input type="checkbox" name="phases[]" value="5">test5</input><br />
  <input type="submit" value="klick mich" />
</form>

</body>
</html>

so wie ich das verstanden habe müsste mir das System nun via alert die Anzahl der checkboxen ausgeben - macht er aber nicht *heul* Habe ich mich vertippt oder sonst was falsch verstanden?

Dank dir!
 
:-( da ich aus der Linux Ecke komme ist das doppelt peinlich!

[ot]
bist du dieses Jahr auf der Cebit? Hast mir schon so oft geholfen würde dir gerne ein Bier, Kaffee oder sonst was ausgeben...
[/ot]
 
*mist*

ich dachte das wäre jetzt ganz einfach - aber irgendwie schaffe ich es wieder nicht die Variable richtig anzusprechen.

Meine funktion sieht nun wie folgt aus:

Code:
function checkForm(msg) {
  var error = ""
  var phase_error = "1"
   for (var i=0; i < document.form.elements['phases[]'].length; i++) {
    if(document.form.elemets['phases[i+1]'].checked) {
      phase_error = ""
    }
  }
  if (phase_error != "") {
    error = "1"
  }

  if(error != "") {
    alert(msg)
    return false
  } else {
    return true
  }
}

ich bekomme aber immer einen Fehler in der Zeile: " if(document.form.elemets['phases[i+1]'].checked) "

Spreche ich das array an dieser Stelle nun auch falsch an oder muss ich das i ähnlich php irgenwie als Variable deklarieren?

Gruß
 
juhu ok geht zumindest weitgehend :) Er trägt mir den Wert für i nicht ein sonder das i selber - zumindest sagt mir das die debug konsole von firefox...

Kann ich ihm explizit sagen, dass das eine Variable ist? In php muss man das im echo Bereich z. B. ".$i." so machen - gibts das bei javascript vielleicht auch?

Vielen Dank!
 
In Javascript muss der Variablenname nicht mit einem $ beginnen.... im Gegenteil, er darf damit nicht beginnen... das erste Zeichen muss ein Buchstabe sein.

Warum er das "i" dort als Solches nimmt, kann ich nicht nachvollziehen...hast du es vieleicht in Anführungszeichen gesetzt?
In JS werden Variablennbamen in Anführungszeichen... egal ob doppelt oder einfach, immer als String behandelt....

Hier mal ein Beispiel-Code, wie es laufe sollte:

Code:
<html>
<head>
 <title>Test</title>
 <script type="text/javascript">
 <!--
  function checkform(objForm)// objForm ist das auslösende Formular, welches sich selbst per this als Objekt übergibt
  {  
   for(e=0; e < objForm.elements['phases[]'].length; ++e)// checkboxen durchlaufen
        {
            if(objForm.elements['phases[]'][e].checked)//wenn checkbox gecheckt
                {
                    return true;//Funktion mit Rückgabewert trueverlassen... Formular wird gesendet...
                }
        }
   alert('Check die phase[]')// wenn es soweit kommt, war keine Checkbox gecheckt
   return false;//Formular-Sendung wird gecancelt
  }
 //-->
 </script>
</head>
<body>
        
<form onsubmit="return checkform(this);">
  <input type="checkbox" name="phases[]" value="1">test1</input><br />
  <input type="checkbox" name="phases[]" value="2">test2</input><br />
  <!-- noch mehr phase[]'s-->
  <input type="submit">
</form>
</body>
</html>
 
Zurück