Formularprüfung funktioniert nicht... :

tulusie

Mitglied
Hallo Profis,

bin gerade dabei ne Formularprüfung zu realisieren. Doch irgendwie scheint ein Fehler drin zu sein... kann mir da jemand weiterhelfen bzw. nen denkanstoss geben?

Außerdem noch ne Frage: wie kann ich erzwingen, dass in einem Feld nur Buchstaben geschrieben werden können? (Bsp. für felder Vorname, Name, Ort, Lieblingsfarbe)

nur Buchstaben -> etwa so? /^[a-zA-Z]+$/
nur Zahlen dann so? /^[0-9]+$/



Code:
function check()
{

var vorname = document.register.vorname.value;
var name = document.register.name.value;
var strasse = document.register.strasse.value;
var plz = document.register.plz.value;
var ort = document.register.ort.value;
//var land = document.register.land_id.value;
var tag = document.register.geb_tag.value;
var monat = document.register.geb_monat.value;
var jahr = document.register.geb_jahr.value;
var handy = document.register.handy_nr.value;
var mail = document.register.email.value;
var groesse = document.register.kleidergroesse.value;
var farbe = document.register.farbe.value;
var datenschutz = document.register.datenschutz.checked;
var code = document.register.code.value;


if(!!vorname && !vorname.match(/^\w+$/)) { 
            alert('Bitte einen gültigen Vornamen eingeben');
            return false;
 }

if(!!name && !name.match(/^\w+$/)) { 
            alert('Bitte einen gültigen Familiennamen eingeben');
            return false;
 }

if(!!strasse && !strasse.match(/^\w/)) { 
            alert('Bitte eine gültige Strasse (inkl. Hausnummer) eingeben');
            return false;
 }

if(!!plz == "") {
	alert("Bitte geben Sie eine Postleitzahl ein");
	return false;
}
//hab ich nicht zusammen genommen, weil ich ne unterschiedliche Fehlermeldung will

if(!!plz.match(/^\d{4,5}$/)) {
          alert('Postleitzahl leider ungültig!');
          return false;
 }


if(!!ort && !ort.match(/^\w/)) { 
         alert('Bitte eine Stadt eingeben');
         return false;
 }


if(!!tag == "") {
	alert("Bitte Deinen kompletten Geburtstag eingeben");
	return false;
}	

if(!!monat == "") {
	alert("Bitte Deinen kompletten Geburtstag eingeben");
	return false;
}	

if(!!jahr == "") {
	alert("Bitte Deinen kompletten Geburtstag eingeben");
	return false;
}
//das sind auswahlfelder - also keine Falscheingabe möglich	

if(!!handy && !handy.match(/^\(\+49|\+43)\d+\/\d+$/)) {
          alert('Diese Handynummer ist leider ungültig! Bitte Nr. mit vorangestelltem +49 (für Deutschland) oder + 43 (für Österreich) eingeben');
            return false;
}	

if(!!mail && !mail.match(/^[a-z]+([-+._][a-z0-9]+)*@[a-z0-9]+([-_.][a-z0-9]+)*\.[a-z]{2,6}$/i)) {
            alert('Mailadresse leider ungültig!');
            return false;
}

if(!!groesse && !groesse.match(/^\d{2,3}$/)) {
            alert('Kleidergröße leider ungültig!');
            return false;
}

if(!!farbe.match(/^\w/)) { 
            alert('Das ist leider keine Farbe');
            return false;
}

if(!!datenschutz == false) {
	   alert("Bitte bestätige noch unsere Datenschutzerklärung.");
	   return false;
}	

if(!!code == "") {
	   alert("Bitte noch einen Gutscheincode eingeben");
	   return false;
}

if(!!code.match(/^\d{10}$/)) {
            alert('Gutscheincode leider falsch!');
            return false;
 }

document.register.action="upload.php";
return true;
}

</script>
 
Hi,

mach mal die doppelten Ausrufezeichen (!!) in deinen if-Abfragen weg.

Eine Möglichkeit nur die Eingabe von Zahlen/Buchstaben zu erlauben ist, dass du ein passendes onKeypress - event bei deinen Feldern einfügst (in die input-tags):

Nur Zahlen
Code:
onKeypress='if (event.keyCode < 48 || event.keyCode > 57){return false;}'

Nur Buchstaben
Code:
onKeypress='if ((event.keyCode > 64 && event.keyCode <91)  || (event.keyCode > 96 && event.keyCode < 123)){return true;}else{return false;}'


MfG
 
also an den beiden !! scheint es nicht zu liegen... :confused:

Und danke für den Tipp mit den Zahlen und Buchstaben. Ich würde es aber gerne mit
JavaScript realisieren (wg. Fehlermeldung).

hmm...
 
Was die doppelten Ausrufezeichen angeht, sind die durchaus sinnvoll, da so sichergestellt wird, dass in der if-Abfrage ein Boolwert rauskommt.

Rein vom Prinzip her ist dein Script auch richtig (nur etwas zu umständlich), hab's mir jetzt aber nicht so genau angschaut... Am Script selbst sollte es also nicht liegen. Wie rufst du denn die Funktion check() auf? Ich könnte mri vorstellen dass du das onclick="return check()" einfach vergessen hast.

Außerdem ist der reguläre Ausdruck für die Handynummer fehlerhaft (ein Backslash zuviel). Der müsste nämlich so heißen:
HTML:
	if(!!handy && !handy.match(/^(\+49|\+43)\d+\/\d+$/)) {
  		alert('Diese Handynummer ist leider ungültig! Bitte Nr. mit vorangestelltem +49 (für Deutschland) oder + 43 (für Österreich) eingeben');
  		return false;
  	}
 
Zuletzt bearbeitet:
Erstmal danke für die Info mit der Handy-Nr.

Ich denke mal, dass die Funktion richtig aufgerufen wird:

Code:
<form method=post name="register" onSubmit="return check()">

...aber das Teil funktioniert einfach nicht...
Es erscheint keine Fehlermeldung wenn ich nichts eingebe.

Und weshalb umständlich? Ich weise zuerst jedem Feld eine Variable zu und prüfe dann nacheinander jedes Feld auf Gültigkeit mit den Bedingungen. Gibt es ne bessere (einfachere) Lösung? :confused:

Hat sonst noch jemand ne Idee wo der Fehler stecken könnte?

danke
 
Hi,

du hast dein Textfeld für die Kleidergröße so deklariert:

Code:
<input type="text" name="kleidergr" size="3" maxlength="3" class="contact">

und versuchst oben über den falschen Namen drauf zuzugreifen:

Code:
var groesse = document.register.kleidergroesse.value;

Grüße
 
Dein eines Feld, dass eigentlich "kleidergroesse" heißen sollte heißt "kleidergr" außerdem muss "if(!!plz == "") {" so heißen: "if(!!plz)", denn klappts auch mit dem Script. Schau das nächste mal einfach auf die Fehlermeldungen.
 
Zuletzt bearbeitet:
super. danke...

jetzt funktionierts auch *aufnkopfschlag*

aber zu meinem besseren Verständnis noch 3 kleine Fragen:

wieso soll ich das "if(!!plz == "") {" so schreiben? "if(!!plz)"
es scheint zu funktionieren...

und mit den regulären ausdrücken komm ich irgendwie noch nicht so klar.
Ich will noch prüfen lassen, dass keine Sonderzeichen oder Zahlen im Namen, Vornamen und Ort vorkommen. Da sollte die Prüfung doch so aussehen:

Code:
if(!!vorname == "" || !vorname.match(/(^\w+$)||(^\d+$)/)) { 
            alert('Bitte einen gültigen Vornamen eingeben');
            return false;
 }

Also sozusagen: Wenn Vorname leer ODER Vorname enthält Sonderzeichen ODER Zahlen, dann Fehlermeldung... Aber da scheint trotzdem was nicht zu stimmen...

@con-f-use
du hast heute mal gepostet, dass es ein umständliches Script sei. Wie hätte ich diese umfangreichen Prüfungen besser lösen können? (bin für jeden Tipp dankbar)
 

Neue Beiträge

Zurück