UIch habe hier ein sehr komplexes Kontaktformulat, bei dem die Auswahl eines Betreffs (subject) in Abhängigkeit vom Erfordernis weiterer Angaben stehen soll. Das ist kein großes Problem, bis auf eine Kleinigkleit, und ich hoffe, dass ihr mir die Augen öffnet.
hier das script (eingekürzt!)
if (document.form.subject.value == "" )
{
alert("Bitte wählen Sie den Betreff Ihrer Anfrage!");
document.form.subject.focus();
return false;
}
else if ((document.form.subject.value == "Thema1") && (document.form.A.value == "" || document.form.B.value == "" || document.form.R2[0].checked|| document.form.R2[1].checked == false))
{
alert("Sie haben eine Anfrage zu Thema1. Wir benötigen daher zwingend einige weitere Angaben zu A, B, und C.");
document.form.A.focus();
return false;
}
Wenn nun Thema 1 gewählt wird, werde ich bei fehlenden Abngaben zu A oder B (beides Textfelder, Typ inpuz) aufgefordert, diese zu ergänzen. C (radio) wird jedoch ignoriert. Dabei habe ich checked, checked==false oder auch R2.value=="" ausprobiert....?
Oder ist eine Verknüpfung dieser unterschiedlichen Formularfelder generell nicht möglich?
Danke und Gruß
Markus
geschrieben von Micha am 17.03.2006 - 12:27
Hi
was ist C? Ohne es genau zu wissen meine ich, das Du beachten solltest, das eine ODER-Verknüpfung bei einem true wahr wird:
HTML-Quelltext
1:
2:
if (true || false || false || false)
alert(true);
Micha
geschrieben von SV-Markus am 17.03.2006 - 14:11
C ist in diesem die dritte Angabe die gemacht werden muss, wenn Thema 1 gewählt wurde.
Die beiden anderen Angaben sind Textfelder, die ich über "value" prüfe. C ist (bzw.war, denn ich habe mich provisorisch darauf eingelassen, die Angaben über eine drop-down-Auswahl abzufragen, die nun ebenfalls über value=="" abgefragt wird) ein Radio-Schaltfläche (in diesem Fall Schulnoten von 1 bis 6, keine aktiviert, die jedoch ausgefüllt werden müssen.
Genau das ist mir aber mit dem gennten Script nicht gelungen. Ich nehme Deinen Hinweise auf "true" dankend an, und werde heute Abend mal versuchen, ob ich mit true || false || false ... weiter komme.
Die Abfrage checked ist aber doch eine Positivabfrage, oder?
ich habe nicht so viel Zeit, habe aber kutz in Deinen Qullcode geschaut. Wenn Du Radio-Boxen nimmst, dann sind die in einem Array und müssen über ihren Index angesprochen werden.
Sowas:
HTML-Quelltext
1:
document.form.R2.checked == false
sollte daher nicht gehen.
Micha
geschrieben von SV-Markus am 18.03.2006 - 20:08
Herzlichen Dank!
Hatte ja schon die Befürchtung geäußert, dass ich diese Feldtypen nicht so einfach mischen kann....
geschrieben von Micha am 19.03.2006 - 19:07
Hi
Um das zu prüfen lass sie über eine Schleife laufen:
HTML-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
var one_item_is_checked = false;
for (var i=0; i<document.form.R2.length; i++){
if (document.form.R2[i].checked == true){
one_item_is_checked = true;
break;
}
}
if (!one_item_is_checked)
window.alert("Bitte R2 auswählen!");
Micha
geschrieben von Matneu am 19.03.2006 - 19:44
Mal so nebenbei: So eine Abfrage ist allerdings ohne Javascript nichts mehr wert und kann einfach umgangen werden.
Ich würde eher auf PHP ausweichen. Da verarbeitest Du das gesendete Formular und prüfst die Eingaben. Kann auch (praktisch) nicht umgangen werden.
So far...
Matthias
geschrieben von Micha am 19.03.2006 - 20:05
Hi
also ich würde beides empfehlen. JavaScript ist zur direkten Prüfung das beste Werkzeug. Es entlastet dabei auch den Server durch on-the-fly Prüfung der Eingaben. Eine serverseitige Kontrolle sollte natürlich abschließen auch realisiert werden...