viele checkboxen überprüfen

prostAta

Grünschnabel
hi habe folgendes problem:
habe ein formular erstellt in dem es ca 12 checkboxen gibt.
man muss mindestens eine anwählen und darf auch nur maximal eine
wählen. ich weiss hier würde man radiobuttons nehmen, aber weil checkboxen schöner aussehen und einfach ein haken netter aussieht als ein blöder punkt, muss ich checkboxen nehmen.
nun meine frage, wie kann ich alle 12 checkboxen überprüfen ob eine checkbox aktiv ist. wenn es mehr oder weniger sind, soll er eine alert meldung rausschmeissen.
schonmal danke für die hilfe
mfg prosta :>
 

Quaese

Moderator
Moderator
Hi,

wenn die Checkboxen alle zu einer Gruppe gehören, d.h. sie besitzen alle den
gleichen Name, ist das relativ einfach zu lösen.

Du kannst die Gruppe wie einen Array durchlaufen und bei jeder einzelnen Checkbox
testen, ob sie gesetzt ist. Weiterhin merkst Du in einer Variablen, ob bereits eine
Box angewählt wurde. Entsprechend ihres Wertes entscheidet sich der weitere
Verlauf.

Code:
function chkCheck(){
    var objChk = document.testForm.chk;  // Formular- und Checkbox-Namen anpassen
    var boolCheck = false;
    // Checkboxen durchlaufen
    for(i=0; i<objChk.length; i++){
        // Falls die gerade untersuchte Checkbox angewählt ist
        if(objChk[i].checked == true){
            // Falls bisher noch keine Checkbox angewählt wurde
            if(boolCheck == false){
                boolCheck = true;  // Gesetzte Checkbox in Variable merken
            }else{
                alert("Höchstens eine Option wählen!");
                return false;
            }
        }
    }
    // Falls keine Option gewählt wurde
    if(boolCheck == false){
        alert("Mindestens eine Option wählen!");
        return false;
    }
    return true;
}
Der Name des Formulars für obiges Script ist testForm, der Name der
Checkbox-Gruppe chk. Beiden kannst Du in der entsprechenden Zeile (siehe
Kommentar) eigenen Namen zuweisen.

Ich hoffe, das hilft Dir weiter.
Ciao
Quaese
 

prostAta

Grünschnabel
hat geklappt :D
großes danke für die schnelle antwort
k habe ein weiteres problem. habe 2 große blöcke mit checkboxen.
guckst du hier
der linke block funktioniert wunderbar -> fehler falls man mehr oder weniger als einen aktiviert hat wird gemeldet.
nur beim rechten block passiert nichts... hier das script:
Code:
var boolCheck2 = false;
      for (a=0; a<12; a++)
      {
          bla = "bla"+a;                   
			 if(document.getElementById(bla).checked )
          {
				if(boolCheck2 == false)
				{
					boolCheck2 = true;
				}
				else
				{
					Fehlermeldung2 = "Bitte nur eine Schriftart auswählen | ";          
				}		
			}
		}
      if(boolCheck2 == false)
		{  
           Fehlermeldung2 = "Bitte eine Schriftart auswählen | ";	
      }
      if (Fehlermeldung2 != "") 
      {
         alert(Fehlermeldung2);
 			return false;
		}
		else
		{
			return true;
		}
}
es is das gleiche script was auch dei fehler für den linken block von
checkboxen ausgibt. nur das die variablen geändert wurden.. also keine ahnung woran es liegen könnte...
so sieht die ausgabe der checkboxen aus:
Code:
<INPUT id="bla0" TYPE=CHECKBOX NAME="bla[]" value="1">1. Primelgelb 951<br>
<INPUT id="bla1" TYPE=CHECKBOX NAME="bla[]" value="2">2. Sonnengelb 927<br>
bis 12 halt weiter ;)
mfg prosta
 
Zuletzt bearbeitet:

Quaese

Moderator
Moderator
Hi,

am besten, Du übergibst der Funktion chkCheck() den Namen der Checkboxen-
gruppe, die getestet werden soll, als Parameter. Mit Hilfe dieses Wertes kannst Du
das entsprechende Checkboxen-Objekt holen und überprüfen.

Wenn Du die Namen der Checkboxen in einem Array organisierst, kannst Du sie
der Reihe nach durchlaufen und testen.

Ich habe Dir einen Lösungsvorschlag in den Anhang gepackt.

Ciao
Quaese
 

prostAta

Grünschnabel
Code:
  checkboxen = new Array("blabla","bla");
  meldungstext = new Array();
  meldungstext[0] = new Array(2);
  meldungstext[0][0] = "Bitte maximal eine Schriftart auswählen | ";
  meldungstext[0][1] = "Bitte eine Schriftart auswählen | ";
  meldungstext[1] = new Array(2);
  meldungstext[1][0] = "Bitte maximal eine Farbe auswählen | ";
  meldungstext[1][1] = "Bitte eine Farbe auswählen | ";
  AnzCheckboxen = new Array(12,11);
  
  for (j=0;j<checkboxen.length; j++)
  {    
    var boolCheck = false;
      for (i=0; i<AnzCheckboxen[j]; i++)
      {
      
          blubb = checkboxen[j]+i;
          
          if(document.getElementById(blubb).checked == true)
           {
				     if(boolCheck == false)
				      {
					     boolCheck = true;
				      }
				     else
				      {
					     Fehlermeldung = meldungstext[j][0];
				      }
			     }
		  }
        if(boolCheck == false)
		      {  
		        Fehlermeldung = meldungstext[j][1];
           }
    if (Fehlermeldung) alert(Fehlermeldung);
    }
so sieht mein code aus..mit hilfe aus nem anderen forum geht aber
irgendwie nicht :>
 

Quaese

Moderator
Moderator
Hi,

ich wundere mich im Augenblick etwas!

Du hast ein Problem, Du fragst hier nach Hilfe, Du bekommst eine funktionierende
Lösung und Du postest als Antwort darauf erneut Deinen nicht funktionierenden
Ansatz - komisch.

Für mich zumindest ist das Problem gelöst.

Ciao
Quaese
 

prostAta

Grünschnabel
k sry hätte dazu schreiben sollen das deins komischerweise nicht
geht. also als einzige html datei funktioniert es wunderbar doch
wenn ich den code in meinen einbaue macht er gar nicht mehr also
er spuckt keine fehlermeldung aus. daher habe ich den code genommen
den ich aus einem anderen forum habe da bei diesem immerhin
der linke teil ging...
nochmals sry für die verwirrung :>
 

Quaese

Moderator
Moderator
Ok,

ich habe mein obiges Script in Deine javascript.js eingefügt, habe die BoolWerte
der Variablen boolbla zugewiesen und gebe diese als Entscheidungskriterium,
ob das Formular verschickt werden soll, wieder zurück.

Das Ganze habe ich mit dem Formular getestet, das unter "gugst du hier" einige
Posts weiter oben zu finden war. Damit funktioniert alles anstandslos.

Die modifizierte js-Datei findest Du im Anhang.

Ciao
Quaese