JavaScript Problem mit Formularüberprüfung

J

jimi77

Gast
Hallo,

ich versuche jetzt schon seit ein einiger Zeit in JavaScript ein Formular zu überprüfen. Ich sage es schon lieber im vorhinein .. ich bin nicht besonders begnadet in JavaScript :)


Es geht um ein Reservierungsformular .. lediglich überprüfung ob das Feld leer ist oder nicht + ob die E-Mail-Adresse richtig ist + Ob die Telefonnummer aus zahlen besteht.

Mein Problem ist das es aus dem Script rausgeht (glaube ich jedenfalls), bevor es alle bedingungen durchgeht.

Das ist meine letzte Version. (habe es auch schon ohne die ganzen returns versucht .. nur mit einem return ganz am schluss)


Code:
function check ()
{
	var name = "";
	var email = "";
	var telefon = "";
	var date = "";
	var time = "";
	var person = "";
	
	name = document.reservierungsformular.name.value;
	email = document.reservierungsformular.email.value;
	telefon = document.reservierungsformular.telefon.value;
	date = document.reservierungsformular.date.value;
	time = document.reservierungsformular.time.value;
	person = document.reservierungsformular.person.value;
	
	if (name != "")
	{
			document.getElementById('reservierung_name').className="";
			return true;
	}
	
	if (name == "")
	{
		document.getElementById('reservierung_name').className="fail";
		return false;
		
			
	}
	
	if (email != "")
	{
		document.getElementById('reservierung_email').className="";
		return true;
		
	}
	if (email == "")
	{
		document.getElementById('reservierung_email').className="fail";
		return false;
		
	}
	if (email.length < 10 || mail.indexOf ('@', 0) == -1 || mail.indexOf ('.',0) == -1)
	{
		document.getElementById('reservierung_email').className="fail";
		return false;
		
	}
	if (telefon != "")
	{
		document.getElementById('reservierung_telefon').className="";
		return true;
		
	}
	if (telefon == "")
	{
		document.getElementById('reservierung_telefon').className="fail";
		return false;
		
	}
	if (isNaN(telefon))
	{
		document.getElementById('reservierung_telefon').className="fail";
		return false;

	}
	
	if (date != "")
	{
		document.getElementById('reservierung_date').className="";
		return true;
		
	}
	
	if (date == "")
	{
		document.getElementById('reservierung_date').className="fail";
		return false;
		
	}

		if (time != "")
	{
		document.getElementById('reservierung_time').className="";
		return true;
			
	}
	if (time == "")
	{
		document.getElementById('reservierung_time').className="fail";
		return false;
			
	}
	
	if (person != "")
	{
		document.getElementById('reservierung_person').className="";
		return true;
		
	}
	if (person == "")
	{
		document.getElementById('reservierung_person').className="fail";
		return false;
			
	}
	
	
}

Hoffentlich könnt ihr mir helfen ..
 
Hi,

also das kann so nicht funktionieren, da return die Funktion exakt an dieser Stelle dann auch beendet. Außerdem kannste auch etwas an der Syntax feilen.

So ein Konstrukt würde ja auch funktionieren ;)

Code:
if (name != "") {
		document.getElementById('reservierung_name').className="";
} else {
		document.getElementById('reservierung_name').className="fail";
}

Aber auf jeden Fall müssen die ganzen returns in deinen Bedingungen raus.

Gruß,

Mathias
 
Dir ist vlt. nicht klar dass nach einer Return-Anweisung Schluss ist in der Funktion. Was nach einer ausgeführten return-Anweisung steht wird nicht mehr beachtet, die Funktion ist dann beendet.

D.h. sobald z.B. name != "" wird nur eben diese eine if-Anweisung ausgeführt und die Funktion gibt ein true zurück. Die ganzen Abfragen dahinter wie z.B spätestens die welche ein email-Feld Abfragt wird nicht weiter beachtet. :)

//zu spät. :)
 
Ja .. ich habe schon oben geschrieben das ich es auch versucht habe ohne die ganzen returns. Lediglich eins in der letzten if-anweisung .... Hat auch nicht funktioniert.

EDIT:

Die funktionen wurden ausgeführt .. aber die Änderungen sind nicht geblieben, die Seite wurde einfach durch das Submit neugeladen.
Der Sinn sollte eigentlich sein, dass die Änderungen bleiben und man dann sieht wo man den Fehler gemacht (zB. die Telefonnummer fehlt)
 
Zuletzt bearbeitet:
Schau doch mal in die Fehlerkonsole von Firefox, ob der bei der Prufüng einen Fehler anzeigt.

Ansonsten hab ich beim Überfliegen folgendes gesehn:

Code:
if (email.length < 10 || mail.indexOf ('@', 0) == -1 || mail.indexOf ('.',0) == -1)

mail sollte doch email heißen?

EDIT:

Du rufst die Funktion bei onsubmit in deinem Form, oder?
 
Zuletzt bearbeitet:
uups :/ ... ja es sollte email heißen

und ja ich rufe sie mit onsubmit="return check()" auf
 
Ok,

dann machs doch so, in deiner Funktion würde ich für jeden möglichen Fehler eine Variable nehmen, die entweder true oder false ist, je nachdem ob ein Fehler auftritt oder nicht.

Code:
if (name != "") {
		document.getElementById('reservierung_name').className="";
		nameError =  false;
} else {
		document.getElementById('reservierung_name').className="fail";
		nameError = true;
}

Dann am Schluß alle Fehlervariablen überprüfen, und je nachdem, false oder true zurückgeben. Das muß nämlich passieren, um ggf das Abschicken des Formulars zu verhindern.

Ist jetzt vielleicht auch nicht die schönste Lösung, sollte aber klappen ^^
 
@Batti ich habe es jz mit dem true und false versucht ... jetzt klappt es :)

Danke!
 
Zurück
Oben