Formularprüfung (erweiterte)

tulusie

Mitglied
Hallo,

bin gerade dabei eine Feldprüfung für Formulare durchzuführen. Bis jetzt bin ich so weit gekommen, daß keine leeren Felder mehr akzeptiert werden (siehe Code unten -> Script funktioniert). Ich bräuchte aber noch eine Prüfung der Felder die folgende Dinge berücksichtigt:

- keine Sonderzeichen in Namen, Vornamen, Strasse, Handy-Nr, Ort etc.
- Strasse darf nur Buchstaben, Zahlen und nen Punkt enthalten
- PLZ darf nur aus Zahlen bestehen und muss 4 ODER 5 stellig sein
- Handy-Nr. muss mit +49 ODER +43 beginnen und darf nur Zahlen enthalten
- E-Mail darf nur gültige Zeichen enthalten
- Kleidergröße darf nur Zahlen enthalten und muss 2 ODER 3 stellig sein

Da meine JavaScript Kenntnisse nicht gerade berauschend sind, hab ich das dann schließlich noch mit diesem Script hier versucht. (Code siehe unten -> Code funktioniert bei mir leider nicht) Aber irgendwie wollen die Scripts nicht so miteinander. :confused: Wie kriege ich diese (komplette) Formular-Prüfung hin?
http://www.tutorials.de/tutorials164254.html

Bin für jede Anregung, jeden Denkanstoss und jede Hilfe dankbar.

Danke.


Das Formular enthält folgende Felder:

Vorname (Pflicht)
Name (Pflicht)
Strasse (Pflicht)
PLZ, Ort (Pflicht)
Land (Pflicht)
Geburtsdatum (Pflicht)
Handy-Nr. (Pflicht)
Email (optional)
Kleidergröße (optional)
Lieblingsfarbe (optional):
Datenschutzerklärung (Pflicht)
Gutschein-Code (Pflicht)

Als Anlage hier die beiden Codes:
 
Zuletzt bearbeitet:
Du solltest dich mal über reguläre Ausdrücke in JavaScript kundig machen.

Hier mal ein paar Beispiele (den Rest musst du selber machen):

Für den Vornamen könnte die Prüfung z.B. so aussehen:
HTML:
if(!document.register.vorname.value.match(/^\w+$/)) { 
              	alert('Fehler');
              	return false;
 }
Ist jetzt nur sinmples Beispiel in dem der Vorname nur aus Buchstaben bestehen darf und mindestens einen haben muss. Kann noch verbessert werden, weil demnach "a" auch ein gültiger Vorname wäre

Für die Kleidergröße so:
HTML:
var groesse = document.register.kleidergroesse.value;
      if(!!groesse && !groesse.match(/^\d{2,3}$/)) {
              	alert('Kleindergröße leider ungültig!');
              	return false;
 }
Nur Zahlen mindestens zwei, höchstens drei könnte man noch präzisieren, weil es ja z.B. die Größe "940" nicht gibt, der Ausdruck sie aber trotzdem zulässt.

Für die Handy-Nr.:
HTML:
var handy = document.register.handy_nr.value;
       if(!!handy && !handy.value.match(/^\(\+49|\+43|0049|0043)\d+\/\d+$/)) {
               	alert('Handynummer leider ungültig!');
               	return false;
 }
Muss mit +49,+43,0049 oder 0043 beginnen, dann muss eine oder mehrere Zahlen folgen, dann ein Slash ( / ) und dann wieder eine oder mehrere Zahlen. Auch das könnte man noch verbessern, weil es z.B. "+491/1" durchlassen würde, aber es tut seinen dienst.

Für die E-Mail:
HTML:
var mail = document.register.email.value;
       if(!!mail && !mail.match(/^[a-z]+([-+._][a-z0-9]+)*@[a-z0-9]+([-_.][a-z0-9]+)*\.[a-z]{2,6}$/i)) {
                	alert('Handynummer leider ungültig!');
                	return false;
 }
Damit kannst du auch die Überpfrüfung leerer Felder sein lassen, weil der gleiche Fehler immer auch bei leeren Feldern kommt. Es ist auch berücksichtig, welche Angabe optional und welche es nicht ist.

Edit:
Upps, sorry, hab irgentwie die zweite Datei übersehen oder hast du die erst hinterher eingefügt?
 
Zuletzt bearbeitet:
Soweit sieht das eigentlich gut aus, du hast nur die Pflichtfelder falsch "zugewiesen"

Bei Pflichtfeldern muss das erste Arrayelement 1 sein.... dies ist bei dir für email, farbe und kleidergr der Fall.

Bei optionalen Feldern muss der Wert 0 sein.
 

Neue Beiträge

Zurück