Formular Überprüfung mit Auswahlkriterien

CreativPur

Erfahrenes Mitglied
Ich bastel schon wieder Stunden an einem Problem..

Ich habe ein Formular, unter anderem mit Radio-Button und Select-Feldern und Input-Feldern.
Diese sollen vor dem Absenden überprüft werden. Das funktioniert auch soweit.

Bei einem Select-Feld öffnet sich bei einem Wert über Null zwei Radio-Button. Das Bedeutet, wenn Kein Kind vorhanden, dann muss auch keine weitere Auswahl getroffen werden.

Wie kann ich also erreichen, dass wenn der Wert (Value) des Select-Feldes "Anzahl_Kinder" (0, bzw. kein Kind) ist, und somit die folgenden Radio-Button "Kindersitze" und das Select-Feld "Kindersitz_Art" nicht überprüft werden ?

Denn in meiner leihenhaften Version muss der User alles ausfüllen, was natürlich keinen Sinn ergibt..

Select-Feld und Radio-Button:
HTML:
<select class="form-control" name="Anzahl_Kinder">
<option value="0">Anzahl Kinder</option>
<option value="kein Kind">Kein Kind</option>
<option value="1 Kind">1 Kind</option>
<option value="2 Kinder">2 Kinder</option>
<option value="3 Kinder">3 Kinder</option>
<option value="4 Kinder">4 Kinder</option>
</select>

<!-- Wird angezeigt, wenn "Anzahl_Kinder" 1,2,3,4 Kinder -->
<div class="col-md-3 col-lg-3 col-sm-12 col-xs-12 box_kindersitz" align="left" style="display:none;">
<div style="margin-top:-20px;">
<label style="color:green; text-align:left;">Werden Kindersitze benötigt ?</label>
</div>
<label>
<input type="radio" name="kindersitze" id="kindersitze_ja" value="kindersitze_ja">
&nbsp;ja
</label>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<label>
<input type="radio" name="kindersitze" id="kindersitze_nein" value="kindersitze_nein">
&nbsp;nein
</label>
</div>

<!-- Wird angezeigt, wenn "Kindersitze" mit Value  "kindersitze_ja" -->
<div class="col-md-3 col-lg-3 col-sm-12 col-xs-12 box_kindersitz_art" style="display:none;">
<div style="margin-top:-20px;">
<label style="color:green; text-align:left;">Art und Anzahl der Kindersitze?</label>
</div>
<select  id="example-buttonText2" name="Kindersitz_Art" class="form-control">
<option value="0">Bitte wählen</option>
<option value="1 Kindersitz">1 Kindersitz</option>
<option value="2 Kindersitze">2 Kindersitze</option>
<option value="3 Kindersitze">3 Kindersitze</option>
<option value="1 Kinderschale">1 Kinderschale</option>
<option value="2 Kinderschalen">2 Kinderschalen</option>
<option value="3 Kinderschalen">3 Kinderschalen</option>
<option value="1 Kindersitz und 1 Kinderschale">1 Kindersitz und 1 Kinderschale</option>
<option value="1 Kindersitz und 2 Kinderschalen">1 Kindersitz und 2 Kinderschalen</option>
<option value="2 Kindersitze und 1 Kinderschale">2 Kindersitze und 1 Kinderschale</option>
</select>
</div>


Die Überprüfung:
Javascript:
function pruefen1(){
var f = document.f1;
var fehler = "";
if (!(f.Radios_Reise_Auswahl[0].checked || f.Radios_Reise_Auswahl[1].checked || f.Radios_Reise_Auswahl[2].checked)){
fehler += "- Bitte wählen Sie die Art der Reise-Fahrt\n";
}
if (f.ziel_anfahrt.value == ""){
fehler += " - Geben Sie bitte Ihren Abholort ein.\n";
}
if (f.ziel_reise.value == ""){
fehler += " - Geben Sie bitte Ihr Reiseziel ein.\n";
}
if (f.Abfahrt_Reise_Datum.value == ""){
fehler += " - Geben Sie bitte den Afahrtermin ein\n";
}
if (f.Abfahrt_Reise_Zeit.value == ""){
fehler += " - Geben Sie bitte die Abfahrtzeit ein\n";
}
if (f.Anzahl_Erwachsene.value == "0"){
fehler += " - Geben Sie bitte die Anzahl der mitfahrenden Erwachsenen ein\n";
}
if (f.Anzahl_Kinder.value == "0"){
fehler += " - Geben Sie bitte die Anzahl der mitfahrenden Kinder ein\n";
}
if (!(f.kindersitze[0].checked || f.kindersitze[1].checked)){
fehler += "- Benötigen Ihre Kinder einen Kindersitz?\n";
}
if (f.box_kindersitz_art.value == "0"){
fehler += " - Welche Art von Kindersitz wird benötigt?\n";
}
if (!(f.dachbox[0].checked || f.dachbox[1].checked)){
fehler += "- Benötigen Sie für mehr Gepäck eine Dach-Box\n";
}
if (fehler != ""){
var fehlertext = "Die folgenden Felder wurden nicht vollständig ausgefüllt:\n\n";
fehlertext += fehler;
alert(fehlertext + "\nBitte füllen Sie die Felder noch aus. Danke.");
return false;
}
return true;
}
 
Hi,
du kannst if-Abfragen verschachteln.
Du schreibst ein elseif mit größer 0 und verschachtelst hier die übrprüfungen der Kindersitze rein.

Bitte denke daran das du neben einer JS-Validierung auch eine auf PHP-Seite benötigst. Sonst kann die Überprüfung ganz einfach umgangen werden.

Grüße
 
Vielen Dank für Deine Antwort..
Ich habe eine PHP-Seite, zumindest ist das Formular und die Ausgabe-Seite in PHP.

Leider tue ich mir aufgrund meines "Grünschnabels-Daseins" verdammt schwer mit if-Abfragen usw..
Uuuuppppsssss... Da steht ja unter meinem Profil-Bild.. "Erfahrendes Mitglied.."
Ohhhh... Da bin ich aber noch einige Lichtjahre von entfernt...

Könntest Du mir zumindest einen klitzekleinen Ansatz schreiben, damit ich überhaupt verstehe, wie ich das ganze angehen muss ?

Vielen Dank..
 
Hi,
also ich bin jetzt auch nicht so der Crack wenns um klassisches JS geht, bin ja eigentlich Designer deshalb tu ich mich mit jQuery leichter.
Aber ich versuchs mal:

Javascript:
if (f.Anzahl_Kinder.value == "0"){
fehler += " - Geben Sie bitte die Anzahl der mitfahrenden Kinder ein\n";
}
else if (f.Anzahl_Kinder.value > "0") {
    if (!(f.kindersitze[0].checked || f.kindersitze[1].checked)){
        fehler += "- Benötigen Ihre Kinder einen Kindersitz?\n";
    }
    if (f.box_kindersitz_art.value == "0"){
        fehler += " - Welche Art von Kindersitz wird benötigt?\n";
    }
}
Also so ungefähr müsste das funktionieren.

Nur ne PHP-Seite zu haben reicht nicht. Es muss das selbe was du hier per JS machst auch per PHP gemacht werden und natürlich solltest du auch schauen ob dein Formular gegen Crossitescripting geschützt ist.
 
Hi..

Ich habe es bis jetzt annähernd so gelöst..

Javascript:
if (f.Anzahl_Kinder.selectedIndex==0){
fehler += " - Geben Sie bitte die Anzahl der mitfahrenden Kinder ein\n";
}
else if  (!(f.kindersitze[0].checked || f.kindersitze[1].checked)){
    if (!(f.Anzahl_Kinder.value == "0")){
        fehler += "- Benötigen Ihre Kinder einen Kindersitz?\n";
  }
else if  (!(f.Kindersitz_Art.selectedIndex==0)){
    if (!(f.kindersitze.value == "kindersitze_ja")){
    if (f.Anzahl_Kinder.value >= "1"){
        fehler += "- Welchen Kindersitz benötigen Ihre Kinder?\n";
      }
    }
  }
}

Leider funktioniert die letzte Abfrage noch nicht, bzw. wird bei "Kindersitz_Art 0" keine Fehlermeldung "Welchen Kindersitz benötigen Ihre Kinder?" herausgegeben..
Wo liegt der klitzekleine Fehler ?
 
uppppsss... und wie lege ich ein sbin an ?? Habe so etwas noch nie getan ? Ich könnte Dir höchstens die Dateien zukommen lassen.
 
Im Grunde kopierst du das HTML ins HTML-Fenster und das JS ins JS Fenster. Fertig.
Das PHP benötigen wir hier ja nicht, und es würde auch nicht funktionieren.

Grüße
 
Hast du mal in der Console nachgeschaut ob ein Fehler ausgeworfen wird?
Die Console kannst du im Browser über [F12] aufrufen (Reiter "Console" auswählen).
 

Neue Beiträge

Zurück