Formularcheck mit entweder oder

schranzbaum

Mitglied
Hallo, ich habe folgendes Problem, wofür ich hier bisher noch keine Lösung gesfunden habe:
Ich habe ein Formular, welches über ein Javascript überprüft wird, ob bestimmte Felder ausgefüllt wurden. Jetzt bin ich an einem Punkt, wo ich 3 Möglichkeiten zur Auswahl habe:
1. Entweder soll in einm Textfeld etwas eingetragen werden, oder
2. es soll ein Radiobutton angeklickt werden oder
3. es soll ein anderer Radiobutton angeklickt werden.

Wie kann ich es hinbekommen, das beim Klick auf den Absende-Button überprüft wird, ob zumindest eine dieser drei Auswahlmöglichkeiten angeklickt, bzw. ausgefüllt wurde?

Wichtig ist, das entweder etwas ins Textfeld geschrieben wurde oder einer der beiden Radiobuttons angeklickt wurde.
Weiss von Euch jemand Rat?

Stefan
 
Hi,

wenn ich dich richtig verstanden haben, darf nicht zugleich etwas ins Textfeld geschrieben
und ein Radiobutton gedrückt sein.

Definiere am besten zwei boolsche Variablen - Startwerte false.
  • Die erste setzt du entsprechend des Textfeldes auf true (gefüllt) bzw. false (leer).
  • Die zweite setzt du entsprechend der Radiogruppen; true (angewählt) bzw. false (nicht angewählt)
Am Ende der Funktion gibst du die XOR-Verknüpfung der beiden Checkvariablen zurück.

Beispiel:
Code:
// Namen der Radiogruppen eintragen
var arrRadio = ["radioTest_1", "radioTest_2"];

function checkForm(objForm){
  var blnCheck = false;
  var blnFormCheck = false;

  // Textfeld prüfen
  if(objForm.txtTest.value != "") blnCheck = true;

  // Relevante Radiogruppen durchlaufen
  for(i=0; i<arrRadio.length; i++){
    // Falls die aktuelle Radiogruppe aus nur einem Element besteht
    if(typeof(objForm.elements[arrRadio[i]].length) == "undefined"){
      // Falls der Radiobutton gewählt wurde
      if(objForm.elements[arrRadio[i]].checked == true){
        blnFormCheck = true;
      }
    }else{
      // Radiogruppe durchlaufen
      for(j=0; j<objForm.elements[arrRadio[i]].length; j++){
        // Falls der aktuelle Radiobutton gewählt wurde
        if(objForm.elements[arrRadio[i]][j].checked == true){
          blnFormCheck = true;
          break;
        }
      }
    }
  }
  // XOR-Verknüpfung der Prüfvariablen zurückgeben
  return ((!blnCheck && blnFormCheck) || (blnCheck && !blnFormCheck));
}
In das Array arrRadio müssen die Namen der Radiogruppen eingetragen werden, die überprüft
werden sollen.

Ich hoffe, das hilft dir weiter

Ciao
Quaese
 
Hallo, du hast mir wahnsinnig weiter geholfen, ich danke dir tausendfach, mein Leben hat wieder einen Sinn. Dir wünsche ich ein schönes Wochenende
 
Eine Frage habe ich aber noch:

Wenn jetzt weder ein Radiobutton angeklickt wurde, noch in das Textfeld etwas eingetragen wurde, wird das Formular nicht versendet. Ich suche jetzt krampfhaft eine Stelle, wo ich ein Alert-Befehl einsetzen kann. Kannst du mir dabei nochmal weiterhelfen. Bin für alles dankbar, tausend Dank vielleicht im voraus?
 
Hi,

weise den Wert der XOR-Verknüpfung einer Variablen zu und prüfe diese anschliessend. Entsprechend
ihres Wertes lässt du eine Fehlermeldung ausgeben.

Ersetze dazu folgende Zeilen
Code:
  // XOR-Verknüpfung der Prüfvariablen zurückgeben
  return ((!blnCheck && blnFormCheck) || (blnCheck && !blnFormCheck));
durch
Code:
  // XOR-Verknüpfung
  blnCheck = ((!blnCheck && blnFormCheck) || (blnCheck && !blnFormCheck));

  // Fehlermeldung ausgeben
  if(!blnCheck) alert("Es muss entweder ein Text eingegeben oder ein Radiobutton angewählt werden!");

  return blnCheck;
Ciao
Quaese
 

Neue Beiträge

Zurück