Hilfe bei Formular Validierung

Chrisi

Grünschnabel
Hallo

Ich habe auf meiner Privaten Website eine kleines Formular, wo ich gerne die Eingabefelder "Nachricht", "Name", "eMail" überprüfen lassen möchte, das diese auch ausgefüllt werden.

Nun habe ich folgendes Java, dass aber nicht richtig funktioniert und komme hier mit dem Javascript nicht weiter. Also die überprüfung der Felder "Nachricht" und "Name" funktioniert, aber die Überprüfung der "Email" geht nicht richtig.

Wenn ich z.B. bei dem Fomular als eMail "test@test" eingebe, kommt keine Meldung. Es sollte doch aber die Meldung: "Bitte geben Sie eine gültige E-Mail-Adresse ein!" kommen?

Wenn ich gar keine eMail Eingebe, kommt die Meldung:
Bitte füllen Sie folgende Felder aus:
- eMail

Stimmt der "emailfilter" nicht? Oder was ist hier Falsch?

Code:
// JavaScript Document
function formCheck(formobj){
	// Enter name of mandatory fields
	var fieldRequired = Array("Nachricht", "Name", "eMail");
	// Enter field description to appear in the dialog box
	var fieldDescription = Array("Nachricht", "Name", "eMail");
	// dialog message
	var alertMsg = "Bitte füllen Sie folgende Felder aus:\n";
	
	var l_Msg = alertMsg.length;
	
	for (var i = 0; i < fieldRequired.length; i++){
		var obj = formobj.elements[fieldRequired[i]];
		if (obj){
			switch(obj.type){
			case "select-one":
				if (obj.selectedIndex == -1 || obj.options[obj.selectedIndex].text == ""){
					alertMsg += " - " + fieldDescription[i] + "\n";
				}
				break;
			case "select-multiple":
				if (obj.selectedIndex == -1){
					alertMsg += " - " + fieldDescription[i] + "\n";
				}
				break;
			case "text":
			case "textarea":
				if (obj.value == "" || obj.value == null){
					alertMsg += " - " + fieldDescription[i] + "\n";
				}
				break;
			default:
			}
			if (obj.type == undefined){
				var blnchecked = false;
				for (var j = 0; j < obj.length; j++){
					if (obj[j].checked){
						blnchecked = true;
					}
				}
				if (!blnchecked){
					alertMsg += " - " + fieldDescription[i] + "\n";
				}
			}
		}
	}

	if (alertMsg.length == l_Msg){
		return true;
	}else{
		alert(alertMsg);
		return false;
	}
}
var emailfilter=/^\w+[\+\.\w-]*@([\w-]+\.)*\w+[\w-]*\.([a-z]{2,4}|\d+)$/i

function checkmail(e){
var returnval=emailfilter.test(e.value);
if (returnval==false){
alert("Bitte geben Sie eine gültige E-Mail-Adresse ein!");
e.select();
}
return returnval;
}

HTML:
<form accept-charset="utf-8" id="kontaktform" method="post" action="phpmailer/phpmail.php" onsubmit="javascript:return formCheck(this);" >

:-)

Edit: Wenn ich bei der eMail nur ein Leerschlag eingebe, kommt auch keine Meldung, und das Formular wird versendet. Vielleicht gibt es ja auch eine bessere Java Script Variante.
 
Zuletzt bearbeitet:
Hi Chrisi,

Willkommen bei tutorials.de!
Also ich hätte ne andere - aber auch nicht perfekte und ziemlich strenge RegEx:
Javascript:
var emailfilter = new RegExp("^[0-9a-zA-Z+\\-*/=?\\^'!%&#_~{|}$`]" +
	"([0-9a-zA-Z+\\-*/=?\\^'!%&#_~{|}$`.]?" +
	"[0-9a-zA-Z+\\-*/=?\\^'!%&#_~{|}$`])*" +
	"@" +
	"[a-zA-Z]" +
	"([a-zA-Z\\-.]?" +
	"[a-zA-Z])*" +
	"\\.[a-zA-Z]{2,3}$");
 
Zuletzt bearbeitet von einem Moderator:

Neue Beiträge

Zurück