Formular mit javascript prüfen

Hallo,
ich habe ein Registrierungsformular geschrieben, das vor dem Abschicken von einer js funktion geprüft wird. Das hab ich mal ganz einfach so gelöst:

[code]

[/code]

Die js Datei funktioniert folgendermaßen:
Zuerst werden die ganzen Variablen definiert und die Variable “error” auf null gesetzt. Dann wird mit diversen if/else Bedingung das Formular auf Vollständikeit geprüft. Wenn ein Feld leer ist dann wird die Variable “error” um eins erhöt. Am schluss wird geprüft ob diese Variable null ist, wenn nicht dann wird das Senden abgebrochen. Funktioniert auch alles wie es soll, bis auf das Kontrollieren ob die E-Mail Adresse bereits in der Datenbank vorhanden ist. Egal ob die E-Mail vorhanden ist oder nicht und egal ob irgendwelchen anderen Felder Fehler aufweisen, das Formular wird in jedem fall abgeschickt.

Das ganze sieht so aus (stark gekürzt):

function CheckForm(form)
{
	
	var firstname = form.firstname.value;
	var email = form.email.value;
	...
	
	var error = 0;
	
	function createRequestObject()
	{
		var init;
		var browser = navigator.appName;
		
		if(browser == "Microsoft Internet Explorer")
		{
			init = new ActiveXObject("Microsoft.XMLHTTP");
		}
		else
		{
			init = new XMLHttpRequest();
		}
			return init;
	}
	
	http = createRequestObject();
	http.open('get', 'check_email.php?email=' + email);
	http.onreadystatechange = handleResponse;
	http.send(null);
	
	function handleResponse()
	{
		
		if(http.responseText == '1') {
			
			document.getElementById('email_fehler').style.display = 'block';
			error++
			
		}
		else {
			
			document.getElementById('email_fehler').style.display = 'none';
			
		}
		
	}
	
	if(error != 0) {
		
		return false;
		
	}
	else {
		
		return true;
		
	}
	
}

Ich könnt mit nur vorstellen das es daran liegt das in der funktion createRequestObject() auch das Wort returne vorkommt. Hab aber keine Ahnung.

Hi,

du versuchst die email über ajax (zumindest so ähnlich) zu überprüfen oder?
Dann google doch mal nach ajax. Der Code wo du da hast sieht mir irgendwie zu kurz für ne komplette abfrage aus…

lg flo

Ich muss gestehn ich kenn mich mit ajax nicht wirklich aus. Ich hab die Abfrage von irgendeiner Seite. Aber ich hab versucht das der abgefragte Wert, also 1 wenn die email adresse existiert und 0 wenn nicht, in ein div geschrieben wird und das hat funktioniert, also kanns glaub ich nicht daran liegen, dass die ajax Funktion falsch ist.

Aber trotzdem Danke!

Onlinebeispiel?

So kann das nicht funktionieren. Wenn du eine Formularprüfung mit
onSubmit machst, kannst du dort kein asynchrones Ajax benutzen, da der Response erst später zur Verfügung steht, nachdem deine CheckForm schon einen Return-Parameter geliefert hat.
Du kannst also entweder:

  1. Ajax in seiner synchronen Variante nutzen oder
  2. Ajax asynchron ausführen und dein Formular dann per submit() abschicken.

Wozu denn da den Server belasten? Zum Testen einer E-Mail reicht es gemein hin aus die Zeichenkette mittels RegEx zu prüfen. (white-hat-web-design.co.uk/b … alidation/)

Alles was mehr macht (MX-Abfragen usw.) ist meiner Meinung nach übertrieben.

richtig, stimme dir vollkommen zu. eine serverseitige prüfung muss so und so durchgeführt werden, da clientseitig nur als hilfestellung für den anwender dienen sollte und manipulierbar ist.

Ja, ok. Dann lass ich die Prüfung ob die E-Mail Adresse existiert weg, weil wer sich bereits registriert hat, der macht das eh nicht noch mal und wer anders verwendet wohl kaum die E-Mail Adresse von wem der bereits registriert ist und außerdem prüft eh das PHP Script noch mal alles bevors in die Datenbank eingetragen wird.

@znv: Aber die Validität der E-Mail prüfen is ne gute Idee, das hätt ich ganz vergessen. DANKE!