2023-05-15 14:26:53 +02:00
// TODO: Aufräumen
2023-05-09 18:05:15 +02:00
2023-05-09 11:25:04 +02:00
// Großbuchstaben -> [A-Z]
// Kleinbuchstaben -> [a-z]
// Bindestrich -> [-]
// Unterstrich -> [_]
// Leerzeichen -> [ ]
// Großbuchstaben (Umlaute) -> [ÄÖÜ]
// Kleinbuchstaben (Umlaute) -> [äöü]
// Sonderzeichen -> [°^!"§$%&/{}()[]=?\´ `@€+*~#'<>|,;.:-_]
//------------------------------------------------------------------------------
// EventListener für die Eingabefelder hinzufügen.
document . getElementById ( "vorName" ) . addEventListener ( "blur" , checkFirstName ) ;
document . getElementById ( "nachName" ) . addEventListener ( "blur" , checkLastName ) ;
document . getElementById ( "strasse" ) . addEventListener ( "blur" , checkStreetName ) ;
document . getElementById ( "hausNummer" )
. addEventListener ( "blur" , checkHouseNumber ) ;
document . getElementById ( "postleitzahl" ) . addEventListener ( "blur" , checkPLZ ) ;
document . getElementById ( "ort" ) . addEventListener ( "blur" , checkCity ) ;
document . getElementById ( "email" ) . addEventListener ( "blur" , checkEmailAddress ) ;
document . getElementById ( "emailRep" )
. addEventListener ( "blur" , checkRepeat _EmailAddress ) ;
document . getElementById ( "passwort" ) . addEventListener ( "blur" , checkPassword ) ;
document . getElementById ( "passwortRep" )
. addEventListener ( "blur" , checkRepeat _Password ) ;
2023-05-09 18:05:15 +02:00
// EventListener für den Button "Registrieren" hinzufügen.
document . getElementById ( "registrierenKnopf" )
. addEventListener ( "click" , checkForPossibleSubmit ) ;
2023-05-17 17:51:57 +02:00
/* / / EventListener für das Formular hinzufügen .
2023-05-09 11:25:04 +02:00
document . getElementById ( "registrierungForm" )
2023-05-17 17:51:57 +02:00
. addEventListener ( "submit" , checkForPossibleSubmit ) ; * /
2023-05-09 11:25:04 +02:00
//------------------------------------------------------------------------------
/ * *
* Überprüft , ob ein Eingabefeld ausgefüllt wurde .
*
* @ param element Eingabefeld , welches überprüft werden soll .
* @ returns false - > Feld wurde nicht ausgefüllt ; true - > Feld wurde ausgefüllt .
* /
function checkIfElementHasValue ( element ) {
2023-05-15 14:26:53 +02:00
regex _onlyWhitespaces = /^\s*$/ ;
if ( element . value == "" || element . value == null
|| regex _onlyWhitespaces . test ( element . value ) ) {
2023-05-09 11:25:04 +02:00
return false ;
}
else {
return true ;
}
}
/ * *
* Zeigt eine Fehlermeldung unter dem übergebenen Eingabefeld ein .
*
* @ param inputField Eingabefeld , unter dem die Meldung erscheinen soll .
2023-05-15 14:26:53 +02:00
* @ param pNumber Nummer des Paragraphen Elements , welches geändert werden soll .
2023-05-09 11:25:04 +02:00
* @ param message Fehlermeldung , die angezeigt werden soll .
* /
2023-05-15 14:26:53 +02:00
function showErrorMessage ( inputField , pNumber , message ) {
2023-05-09 11:25:04 +02:00
inputField . style . border = "2px solid #F22C2C"
var classOfInputField = inputField . parentElement ;
2023-05-15 14:26:53 +02:00
var errorMessage = classOfInputField . getElementsByTagName ( 'p' ) [ pNumber ] ;
2023-05-09 11:25:04 +02:00
errorMessage . innerHTML = message ;
errorMessage . style . display = "block" ;
}
/ * *
* Entfernt eine Fehlermeldung , falls vorhanden .
*
* @ param inputField Eingabefeld , dessen Meldung entfernt werden soll .
2023-05-15 14:26:53 +02:00
* @ param pNumber Nummer des Paragraphen Elements , welches geändert werden soll .
2023-05-09 11:25:04 +02:00
* /
2023-05-15 14:26:53 +02:00
function removeErrorMessage ( inputField , pNumber ) {
2023-05-09 11:25:04 +02:00
inputField . style . border = "2px solid #70AD47"
var classOfInputField = inputField . parentElement ;
2023-05-15 14:26:53 +02:00
var errorMessage = classOfInputField . getElementsByTagName ( 'p' ) [ pNumber ] ;
2023-05-09 11:25:04 +02:00
errorMessage . style . display = "none" ;
}
/ * *
* Jeder Vorname beginnt mit einem Großbuchstaben ,
* gefolgt von mindestens einem Kleinbuchstaben .
* Mehrere Vornamen können mit einem Leerzeichen
* oder Bindestrich getrennt werden .
* /
// Beispiele zum Testen:
2023-05-15 14:26:53 +02:00
// Anna -> Keine Fehlermeldung
// Björn -> Keine Fehlermeldung
// Anna-Maria -> Keine Fehlermeldung
// Anna Maria -> Keine Fehlermeldung
// -> Fehlermeldung Leeres Feld
// -> Fehlermeldung Leeres Feld
// Sarah. -> Fehlermeldung Erlaubte Zeichen
// Karín -> Fehlermeldung Erlaubte Zeichen
// 1234 -> Fehlermeldung Erlaubte Zeichen
// L -> Fehlermeldung Anzahl Zeichen
// Anna maria -> Fehlermeldung Groß- und Kleinschreibung
// Anna MAria -> Fehlermeldung Groß- und Kleinschreibung
// Annnna -> Fehlermeldung Aufeinanderfolgende Gleiche Zeichen
// Anna--Maria -> Fehlermeldung Aufeinanderfolgende Sonderzeichen
// Anna Maria -> Fehlermeldung Aufeinanderfolgende Sonderzeichen
// Anna M -> Fehlermeldung Anzahl Zeichen pro Teil
// Anna- -> Fehlermeldung Letztes Zeichen
// Anna -> Fehlermeldung Letztes Zeichen
2023-05-09 11:25:04 +02:00
function checkFirstName ( ) {
var firstName = document . getElementById ( "vorName" ) ;
2023-05-15 14:26:53 +02:00
// Fehlermeldung Leeres Feld
2023-05-09 11:25:04 +02:00
if ( ! ( checkIfElementHasValue ( firstName ) ) ) {
2023-05-15 14:26:53 +02:00
showErrorMessage ( firstName , 0 , "Bitte füllen Sie das Feld aus." )
return false ;
}
// Fehlermeldung Erlaubte Zeichen
else if ( ! ( /^[A-Za-zÄÖÜäöüß -]*$/ . test ( firstName . value ) ) ) {
showErrorMessage ( firstName , 0 ,
"Ein Vorname darf nur Groß- und Kleinbuchstaben von A-Z, "
+ "sowie Umlaute, Eszett, Bindestriche und Leerzeichen enthalten." ) ;
return false ;
}
// Fehlermeldung Anzahl Zeichen
else if ( ! ( /.{2,}/ . test ( firstName . value ) ) ) {
showErrorMessage ( firstName , 0 ,
"Ein Vorname muss aus mindestens zwei Buchstaben bestehen." ) ;
return false ;
}
// Fehlermeldung Aufeinanderfolgende Sonderzeichen
else if ( /(?:([- ])\1{1,}|( -)|(- ))/ . test ( firstName . value ) ) {
showErrorMessage ( firstName , 0 ,
"Mehrere Sonderzeichen dürfen nicht nebeneinander stehen." ) ;
2023-05-09 11:25:04 +02:00
return false ;
}
2023-05-15 14:26:53 +02:00
// Fehlermeldung Anzahl Zeichen pro Teil
else if ( ! ( /^([A-ZÄÖÜa-zäöüß]{2,}[ -]?)+$/ . test ( firstName . value ) ) ) {
showErrorMessage ( firstName , 0 ,
"Jeder Teil eines Vornamens muss aus "
+ "mindestens zwei Buchstaben bestehen." ) ;
return false ;
}
// Fehlermeldung Letztes Zeichen
else if ( ! ( /[a-zäöüß]$/ . test ( firstName . value ) ) ) {
showErrorMessage ( firstName , 0 ,
"Der Vorname muss mit einem Kleinbuchstaben enden." ) ;
return false ;
}
// Fehlermeldung Groß- und Kleinschreibung
2023-05-17 13:16:27 +02:00
else if ( ! ( /^[A-ZÄÖÜ][a-zäöüß]+([- ][A-ZÄÖÜ][a-zäöüß]+)*$/
. test ( firstName . value ) ) ) {
2023-05-15 14:26:53 +02:00
showErrorMessage ( firstName , 0 ,
"Jeder Teil eines Vornamens "
+ "muss mit einem Großbuchstaben beginnen. "
+ "Nach einem Großbuchstaben folgen nur Kleinbuchstaben." ) ;
return false ;
}
// Fehlermeldung Aufeinanderfolgende Gleiche Zeichen
else if ( /(\w)\1{2,}/ . test ( firstName . value ) ) {
showErrorMessage ( firstName , 0 ,
"Es dürfen nicht mehr als zwei gleiche Buchstaben "
+ "nebeneinander stehen." ) ;
2023-05-09 11:25:04 +02:00
return false ;
}
else {
2023-05-15 14:26:53 +02:00
removeErrorMessage ( firstName , 0 ) ;
2023-05-09 11:25:04 +02:00
return true ;
}
}
/ * *
* Ein Nachname kann mit einem Klein - oder Großbuchstaben beginnen ,
* gefolgt von mindestens einem Kleinbuchstaben .
* Mehrere Nachnamen können mit einem Leerzeichen
* oder Bindestrich getrennt werden .
* /
// Beispiele zum Testen:
2023-05-15 14:26:53 +02:00
// Schulze -> Keine Fehlermeldung
// Jäger -> Keine Fehlermeldung
// Ziegler-Hermann -> Keine Fehlermeldung
// von der Leyen -> Keine Fehlermeldung
// von Bern -> Keine Fehlermeldung
// zu Liechtenstein -> Keine Fehlermeldung
// Bÿl -> Fehlermeldung Erlaubte Zeichen
// Jäger. -> Fehlermeldung Erlaubte Zeichen
// 1234 -> Fehlermeldung Erlaubte Zeichen
// B -> Fehlermeldung Anzahl Zeichen
// -> Fehlermeldung Leeres Feld
// -> Fehlermeldung Leeres Feld
// bauer -> Fehlermeldung Erlaubtes Namenspräfix
// vom Bauer -> Fehlermeldung Erlaubtes Namenspräfix
// BauEr -> Fehlermeldung Groß- und Kleinschreibung
// Bauuuer -> Fehlermeldung Aufeinanderfolgende Gleiche Zeichen
// Ziegler Hermann -> Fehler Doppelnamen
// Ziegler--Hermann -> Fehlermeldung Aufeinanderfolgende Sonderzeichen
// Bauer- -> Fehlermeldung Letztes Zeichen
2023-05-09 11:25:04 +02:00
function checkLastName ( ) {
var lastName = document . getElementById ( "nachName" ) ;
2023-05-15 14:26:53 +02:00
// Fehlermeldung Leeres Feld
2023-05-09 11:25:04 +02:00
if ( ! ( checkIfElementHasValue ( lastName ) ) ) {
2023-05-15 14:26:53 +02:00
showErrorMessage ( lastName , 0 , "Bitte füllen Sie das Feld aus." )
return false ;
}
// Fehlermeldung Erlaubte Zeichen
else if ( ! ( /^[A-Za-zÄÖÜäöüß -]*$/ . test ( lastName . value ) ) ) {
showErrorMessage ( lastName , 0 ,
"Ein Nachname darf nur Groß- und Kleinbuchstaben von A-Z, "
+ "sowie Umlaute, Eszett, Bindestriche und Leerzeichen enthalten." ) ;
return false ;
}
// Fehlermeldung Anzahl Zeichen
else if ( ! ( /.{2,}/ . test ( lastName . value ) ) ) {
showErrorMessage ( lastName , 0 ,
"Ein Nachname muss aus mindestens zwei Buchstaben bestehen." ) ;
return false ;
}
// Fehlermeldung Aufeinanderfolgende Sonderzeichen
else if ( /([-])\1{1,}/ . test ( lastName . value ) ) {
showErrorMessage ( lastName , 0 ,
"Mehrere Sonderzeichen dürfen nicht nebeneinander stehen." ) ;
return false ;
}
// Fehlermeldung Anzahl Zeichen pro Teil
else if ( ! ( /^([A-ZÄÖÜa-zäöüß]{2,}[ -]?)+$/ . test ( lastName . value ) ) ) {
showErrorMessage ( lastName , 0 ,
"Jeder Teil eines Nachnamens muss aus "
+ "mindestens zwei Buchstaben bestehen." ) ;
2023-05-09 11:25:04 +02:00
return false ;
}
2023-05-15 14:26:53 +02:00
// Fehlermeldung Letztes Zeichen
else if ( ! ( /[a-zäöüß]$/ . test ( lastName . value ) ) ) {
showErrorMessage ( lastName , 0 ,
"Der Nachname muss mit einem Kleinbuchstaben enden." ) ;
return false ;
}
// Fehler Doppelnamen
else if ( /[A-ZÄÖÜ][a-zäöüß]+[ ]+[A-ZÄÖÜ][a-zäöüß]+/ . test ( lastName . value ) ) {
showErrorMessage ( lastName , 0 ,
"Doppelnamen müssen mit einem Bindestrich getrennt werden." ) ;
return false ;
}
// Fehlermeldung Erlaubtes Namenspräfix
else if ( ! ( /^(von( der)?|zu)[ ][A-ZÄÖÜ]|^[A-ZÄÖÜ]/ . test ( lastName . value ) ) ) {
showErrorMessage ( lastName , 0 ,
"Ein Nachname muss muss mit einem Großbuchstaben beginnen, "
+ "es sei denn, Sie benutzen ein Namenspräfix.<br>"
+ "Gültige Namenspräfixe sind 'von', 'zu' und 'von der'." ) ;
return false ;
}
// Fehlermeldung Groß- und Kleinschreibung
else if ( ! ( /(^(von( der)?|zu)[ ][A-ZÄÖÜ][a-zäöüß]+|^[A-ZÄÖÜ][a-zäöüß]+)([-][A-ZÄÖÜ][a-zäöüß]+)?$/ . test ( lastName . value ) ) ) {
showErrorMessage ( lastName , 0 ,
"Jeder Teil eines Nachnamens, bis auf den möglichen Namenszusatz am Anfang, "
+ "muss mit einem Großbuchstaben beginnen. "
+ "Nach einem Großbuchstaben folgen nur Kleinbuchstaben." ) ;
return false ;
}
// Fehlermeldung Aufeinanderfolgende Gleiche Zeichen
else if ( /(\w)\1{2,}/ . test ( lastName . value ) ) {
showErrorMessage ( lastName , 0 ,
"Es dürfen nicht mehr als zwei gleiche Buchstaben "
+ "nebeneinander stehen." ) ;
2023-05-09 11:25:04 +02:00
return false ;
}
else {
2023-05-15 14:26:53 +02:00
removeErrorMessage ( lastName , 0 ) ;
2023-05-09 11:25:04 +02:00
return true ;
}
}
/ * *
2023-05-17 13:16:27 +02:00
* Ein Straßenname kann aus Buchstaben ( inlusive Umlaute ) , Ziffern
2023-05-09 11:25:04 +02:00
* oder einer Mischung aus beidem bestehen .
* Auch Apostrophen und das scharfe S können im Namen vorkommen ,
* stehen aber nie am Anfang .
* Ein Straßenname kann aus mehreren Teilen bestehen ,
* welche mit einem Leerzeichen oder Bindestrich getrennt werden .
* /
// Beispiele zum Testen:
2023-05-15 14:26:53 +02:00
// Straße 73 -> Keine Fehlermeldung
// Kurt-Romstöck-Ring -> Keine Fehlermeldung
// Laehr'scher Jagdweg -> Keine Fehlermeldung
// A 3 -> Keine Fehlermeldung -> Keine Fehlermeldung
// A3 -> Keine Fehlermeldung
2023-05-17 13:16:27 +02:00
// -> Fehlermeldung Leeres Feld
// -> Fehlermeldung Leeres Feld
2023-05-15 14:26:53 +02:00
// Frießenstr. -> Fehlermeldung Erlaubte Zeichen
// D -> Fehlermeldung Anzahl Zeichen
// 1234 -> Fehlermeldung Ziffern
2023-05-17 13:16:27 +02:00
// Fri3senstraße -> Fehlermeldung Ziffern
2023-05-15 14:26:53 +02:00
// kurt-Romstöck-Ring -> Fehlermeldung Groß- und Kleinschreibung
// Rue de Saint-Germain-lès-Corbeil -> Fehlermeldung Erlaubte Zeichen
2023-05-17 13:16:27 +02:00
// Musterstraße' -> Fehlermeldung Letztes Zeichen
2023-05-09 11:25:04 +02:00
function checkStreetName ( ) {
var streetName = document . getElementById ( "strasse" ) ;
2023-05-15 14:26:53 +02:00
// Fehlermeldung Leeres Feld
2023-05-09 11:25:04 +02:00
if ( ! ( checkIfElementHasValue ( streetName ) ) ) {
2023-05-15 14:26:53 +02:00
showErrorMessage ( streetName , 0 ,
"Bitte füllen Sie das Feld Straße aus." ) ;
2023-05-09 11:25:04 +02:00
return false ;
}
2023-05-15 14:26:53 +02:00
// Fehlermeldung Anzahl Zeichen
else if ( ! ( /.{2,}/ . test ( streetName . value ) ) ) {
showErrorMessage ( streetName , 0 ,
"Ein Straßenname muss aus mindestens zwei Zeichen bestehen." ) ;
return false ;
}
// Fehlermeldung Ziffern
2023-05-17 13:16:27 +02:00
else if ( ! ( /^[^0-9]*$|[0-9]$/ . test ( streetName . value ) ) ) {
2023-05-15 14:26:53 +02:00
showErrorMessage ( streetName , 0 ,
2023-05-17 13:16:27 +02:00
"Ziffern und Zahlen dürfen nur am Ende des Straßennamens stehen." ) ;
2023-05-15 14:26:53 +02:00
return false ;
}
// Fehlermeldung Erlaubte Zeichen
2023-05-17 13:16:27 +02:00
else if ( ! ( /^[A-Za-z0-9ÄÖÜäöüß' -]+$/ . test ( streetName . value ) ) ) {
2023-05-15 14:26:53 +02:00
showErrorMessage ( streetName , 0 ,
"Ein Straßenname darf nur aus Groß- und Kleinbuchstaben, "
+ "Umlauten, Eszett, Ziffern, Bindestrichen "
+ "und Apostrophen bestehen.<br>Bitte stellen Sie sicher, "
+ "dass alle Abkürzungen ausgeschrieben sind." ) ;
2023-05-09 11:25:04 +02:00
return false ;
}
2023-05-17 13:16:27 +02:00
// Fehlermeldung Groß- und Kleinschreibung
else if ( ! ( /^[A-ZÄÖÜ][ -]?[a-zäöü0-9ß']+([ -]?[A-ZÄÖÜ0-9][A-Za-z0-9ÄÖÜäöüß']+)*$/ )
. test ( streetName . value ) ) {
showErrorMessage ( streetName , 0 ,
"Jeder Teil des Straßennamens muss "
+ "mit einem Großbuchstaben beginnen." ) ;
return false ;
}
// Fehlermeldung Letztes Zeichen
else if ( ! ( /[0-9]$|[a-zäöüß]$/ . test ( streetName . value ) ) ) {
showErrorMessage ( streetName , 0 ,
"Ein Straßenname kann nur mit einer Ziffer "
+ "oder einem Kleinbuchstaben enden." ) ;
return false ;
}
2023-05-09 11:25:04 +02:00
else {
2023-05-15 14:26:53 +02:00
removeErrorMessage ( streetName , 0 ) ;
2023-05-09 11:25:04 +02:00
return true ;
}
}
/ * *
* Eine Hausnummer kann aus Ziffern und maximal einem Kleinbuchstaben bestehen .
* Jede Hausnummer beginnt mit mindestens einer Ziffer .
* /
2023-05-17 13:16:27 +02:00
// Beispiele zum Testen:
// 54 -> Keine Fehlermeldung
// 2a -> Keine Fehlermeldung
// -> Fehlermeldung Leeres Feld
// -> Fehlermeldung Leeres Feld
// a3 -> Fehlermeldung Erstes Zeichen
// 2A -> Fehlermeldung Syntax
// 2ab -> Fehlermeldung Syntax
// 12345 -> Fehlermeldung Syntax
// 0 -> Fehlermeldung Führende Null
2023-05-09 11:25:04 +02:00
function checkHouseNumber ( ) {
var houseNumber = document . getElementById ( "hausNummer" ) ;
2023-05-17 13:16:27 +02:00
// Fehlermeldung Leeres Feld
2023-05-09 11:25:04 +02:00
if ( ! ( checkIfElementHasValue ( houseNumber ) ) ) {
2023-05-17 13:16:27 +02:00
showErrorMessage ( houseNumber , 1 ,
"Bitte füllen Sie das Feld Hausnummer aus." ) ;
2023-05-09 11:25:04 +02:00
return false ;
}
2023-05-17 13:16:27 +02:00
// Fehlermeldung Erstes Zeichen
else if ( ! ( /^[0-9]/ . test ( houseNumber . value ) ) ) {
showErrorMessage ( houseNumber , 1 ,
"Eine Hausnummer muss mit einer Ziffer beginnen." ) ;
return false ;
}
// Fehlermeldung Führende Null
else if ( /^0/ . test ( houseNumber . value ) ) {
showErrorMessage ( houseNumber , 1 ,
"Eine Hausnummer kann nicht mit einer Null beginnen." ) ;
return false ;
}
// Fehlermeldung Syntax
else if ( ! ( /^[1-9][0-9]{0,3}[a-z]?$/ . test ( houseNumber . value ) ) ) {
showErrorMessage ( houseNumber , 1 ,
"Bitte geben Sie eine gültige Hausnummer ein, "
+ "welche aus maximal fünf Ziffern und maximal "
+ "einem Kleinbuchstaben am Ende der Hausnummer besteht." ) ;
2023-05-09 11:25:04 +02:00
return false ;
}
else {
2023-05-17 13:16:27 +02:00
removeErrorMessage ( houseNumber , 1 ) ;
2023-05-09 11:25:04 +02:00
return true ;
}
}
/ * *
* Eine Postleitzahl besteht aus einer Reihe von fünf Ziffern .
2023-05-15 14:26:53 +02:00
* Die kleinste mögliche Postzahl ist 01001.
2023-05-09 11:25:04 +02:00
* /
2023-05-17 13:16:27 +02:00
// Beispiele zum Testen:
// 67547 -> Keine Fehlermeldung
// 08123 -> Keine Fehlermeldung
// -> Fehlermeldung Leeres Feld
// -> Fehlermeldung Leeres Feld
// 00000 -> Fehlermeldung Syntax
2023-05-09 11:25:04 +02:00
function checkPLZ ( ) {
var plz = document . getElementById ( "postleitzahl" ) ;
2023-05-17 13:16:27 +02:00
// Fehlermeldung Leeres Feld
2023-05-09 11:25:04 +02:00
if ( ! ( checkIfElementHasValue ( plz ) ) ) {
2023-05-17 13:16:27 +02:00
showErrorMessage ( plz , 0 ,
"Bitte füllen Sie das Feld Postleitzahl aus." ) ;
2023-05-09 11:25:04 +02:00
return false ;
}
2023-05-17 13:16:27 +02:00
// Fehlermeldung Syntax
else if ( ! ( /^(0100[1-9]|010[1-9][0-9]|01[1-9][0-9]{2}|0[2-9][0-9]{3}|[1-9][0-9]{4})$/
. test ( plz . value ) ) ) {
showErrorMessage ( plz , 0 ,
"Bitte geben Sie eine gültige Postleitzahl ein, "
+ "welche aus fünf Ziffern besteht. "
+ "Die kleinste gültige Postleitzahl ist 01001." ) ;
2023-05-09 11:25:04 +02:00
return false ;
}
else {
2023-05-17 13:16:27 +02:00
removeErrorMessage ( plz , 0 ) ;
2023-05-09 11:25:04 +02:00
return true ;
}
}
/ * *
2023-05-17 13:16:27 +02:00
* Ein Stadtname besteht aus Buchstaben ( inklusive Umlaute und Eszett ) ,
2023-05-09 11:25:04 +02:00
* kann mehrere Teile haben und beginnt immer mit einem Großbuchstaben .
* Die einzelnen Teile können durch ein Leerzeichen , einen Bindestrich ,
2023-05-17 13:16:27 +02:00
* oder einen Schrägstrich getrennt werden .
2023-05-09 11:25:04 +02:00
* /
// Beispiele zum Testen:
2023-05-17 13:16:27 +02:00
// Füssen -> Keine Fehlermeldung
// Frankenberg/Sachsen -> Keine Fehlermeldung
// Eschenbach in der Oberpfalz -> Keine Fehlermeldung
// Auma-Weidatal -> Keine Fehlermeldung
// Gießen -> Keine Fehlermeldung
// -> Fehlermeldung Leeres Feld
// -> Fehlermeldung Leeres Feld
// St. Ingbert -> Fehlermeldung Erlaubte Zeichen
// Auma--Weidatal -> Fehlermeldung Aufeinanderfolgende Sonderzeichen
// Frankenberg/ Sachsen -> Fehlermeldung Aufeinanderfolgende Sonderzeichen
// Füsssen -> Fehlermeldung Aufeinanderfolgende Gleiche Zeichen
// S -> Fehlermeldung Anzahl Zeichen
// Auma-weidatal -> Fehlermeldung Groß- und Kleinschreibung
// füssen -> Fehlermeldung Großschreibung Anfang
// FüSsen -> Fehlermeldung Groß- und Kleinschreibung
// Auma- -> Fehlermeldung Letztes Zeichen
2023-05-09 11:25:04 +02:00
function checkCity ( ) {
var city = document . getElementById ( "ort" ) ;
2023-05-17 13:16:27 +02:00
// Fehlermeldung Leeres Feld
2023-05-09 11:25:04 +02:00
if ( ! ( checkIfElementHasValue ( city ) ) ) {
2023-05-17 13:16:27 +02:00
showErrorMessage ( city , 1 ,
"Bitte füllen Sie das Feld Ort aus." ) ;
return false ;
}
// Fehlermeldung Anzahl Zeichen
else if ( ! ( /.{2,}/ . test ( city . value ) ) ) {
showErrorMessage ( city , 1 ,
"Ein Ortsname muss aus mindestens zwei Zeichen bestehen." ) ;
return false ;
}
// Fehlermeldung Aufeinanderfolgende Sonderzeichen
else if ( /[ \/-][ \/-]/ . test ( city . value ) ) {
showErrorMessage ( city , 1 ,
"Mehrere Sonderzeichen dürfen nicht nebeneinander stehen." ) ;
return false ;
}
// Fehlermeldung Erlaubte Zeichen
else if ( ! ( /^[A-ZÄÖÜa-zäöüß \/-]+$/ . test ( city . value ) ) ) {
showErrorMessage ( city , 1 ,
"Ein Ortsname kann nur aus Groß- und Kleinbuchstaben, "
+ "inklusive Umlauten und Eszett bestehen. "
+ "Mehrteilige Ortsnamen können mit einem Leerzeichen, Bindestrich "
+ "oder Schrägstrich getrennt werden. Bitte stellen Sie außerdem "
+ " sicher, dass alle Abkürzungen ausgeschrieben sind." )
return false ;
}
// Fehlermeldung Aufeinanderfolgende Gleiche Zeichen
else if ( /(\w)\1{2,}/ . test ( city . value ) ) {
showErrorMessage ( city , 1 ,
"Es dürfen nicht mehr als zwei gleiche Buchstaben "
+ "nebeneinander stehen." ) ;
2023-05-09 11:25:04 +02:00
return false ;
}
2023-05-17 13:16:27 +02:00
// Fehlermeldung Großschreibung Anfang
else if ( ! ( /^[A-ZÄÖÜ]/ . test ( city . value ) ) ) {
showErrorMessage ( city , 1 ,
"Ein Ortsname muss mit einem Großbuchstaben beginnen." ) ;
return false ;
}
// Fehlermeldung Letztes Zeichen
else if ( ! ( /[a-zäöüß]$/ . test ( city . value ) ) ) {
showErrorMessage ( city , 1 ,
"Ein Ortsname kann nur mit einem Kleinbuchstaben enden." ) ;
return false ;
}
// Fehlermeldung Groß- und Kleinschreibung
else if ( ! ( /^[A-ZÄÖÜ][a-zäöüß]+([ -\/][A-ZÄÖÜa-zäöü][a-zäöüß]+)*$/ )
. test ( city . value ) ) {
showErrorMessage ( city , 1 ,
"Großbuchstaben können nur am Anfang des Ortsnamens oder, "
+ "bei mehrteiligen Ortsnamen, am Anfang eines Teilnamens stehen." ) ;
2023-05-09 11:25:04 +02:00
return false ;
}
else {
2023-05-17 13:16:27 +02:00
removeErrorMessage ( city , 1 ) ;
2023-05-09 11:25:04 +02:00
return true ;
}
}
/ * *
* Eine E - Mail - Addresse besteht aus einem Lokal - und einem Domänenteil ,
* welche durch ein @ Zeichen getrennt werden .
* Der lokale Teil darf Buchstaben ( Basis - Lateinisch ) , Ziffern
2023-05-15 14:26:53 +02:00
* und verschiedene Sonderzeichen enthalten .
2023-05-09 11:25:04 +02:00
*
* Der ganze Lokalteil oder Teilabschnitte
* können mit Anführungszeichen umschlossen werden .
* Innerhalb der Anführungszeichen dürfen zusätzliche Sonderzeichen
* und Leerzeichen genutzt werden .
* Auch erneute Anführungszeichen und Backslashes sind erlaubt ,
* müssen aber nach einem zusätzlichen Backslash stehen .
* Am Anfang und Ende des lokalen Teils dürfen Kommentare in runden Klammern stehen .
* Der Lokalteil darf nicht mit einem Punkt beginnen oder enden .
*
* Der Domänenteil besteht meist selbst aus drei Teilen :
* einem Hostnamen , einem Punkt und einer Top - Level - Domain .
* Die Top - Level - Domain besteht aus mindestens zwei Zeichen .
*
* /
2023-05-17 13:16:27 +02:00
// Beispiele zum Testen:
// MaxMustermann@email.de -> Keine Fehlermeldung
// Max!#.Mustermann@email9.com -> Keine Fehlermeldung
2023-05-09 11:25:04 +02:00
function checkEmailAddress ( ) {
2023-05-17 13:16:27 +02:00
const regex _emailAddress = /[A-Za-z0-9_!#$%&'*+-\/=?^_`.{|}~]+[@][A-Za-z0-9-]+[.][A-Za-z]{2,}/ ;
2023-05-09 11:25:04 +02:00
var emailAddress = document . getElementById ( "email" ) ;
if ( ! ( checkIfElementHasValue ( emailAddress ) ) ) {
2023-05-17 13:16:27 +02:00
showErrorMessage ( emailAddress , 0 , "Bitte füllen Sie das Feld aus." ) ;
2023-05-09 11:25:04 +02:00
return false ;
}
else if ( ! ( regex _emailAddress . test ( emailAddress . value ) ) ) {
2023-05-17 13:16:27 +02:00
showErrorMessage ( emailAddress , 0 , "Bitte geben Sie eine gültige E-Mail-Addresse ein, welche die Form 'lokalerTeil@domainteil.topLevelDomain' hat. Erlaubte Zeichen sind Groß- und Kleinbuchstaben, Ziffern und Sonderzeichen." ) ;
2023-05-09 11:25:04 +02:00
return false ;
}
else {
2023-05-17 17:51:57 +02:00
removeErrorMessage ( emailAddress , 0 ) ;
2023-05-09 11:25:04 +02:00
return true ;
}
}
/ * *
* Prüft die Übereinstimmung mit der bereits eingegebenen E - Mail - Addresse .
* /
function checkRepeat _EmailAddress ( ) {
var emailAddress = document . getElementById ( "email" ) ;
var repeatEmailAddress = document . getElementById ( "emailRep" ) ;
if ( ! ( checkIfElementHasValue ( repeatEmailAddress ) ) ) {
2023-05-15 14:26:53 +02:00
showErrorMessage ( repeatEmailAddress , 0 ,
"Bitte füllen Sie das Feld aus." ) ;
2023-05-09 11:25:04 +02:00
return false ;
}
else if ( emailAddress . value != repeatEmailAddress . value ) {
2023-05-15 14:26:53 +02:00
showErrorMessage ( repeatEmailAddress , 0 ,
"Bitte stellen Sie sicher, "
+ "dass die E-Mail-Addressen miteinander übereinstimmen." ) ;
2023-05-09 11:25:04 +02:00
return false ;
}
else {
2023-05-15 14:26:53 +02:00
removeErrorMessage ( repeatEmailAddress , 0 ) ;
2023-05-09 11:25:04 +02:00
return true ;
}
}
/ * *
* Ein Passwort muss aus mindestens sechs Zeichen bestehen .
* Außerdem muss das Passwort mindestens einen Groß - und Kleinbuchstaben
* ( Basis - Lateinisch und Umlaute ) , eine Ziffer
* und eines der folgenden Sonderzeichen enthalten :
* [ ! ° ` ´ @#$ %^&*()_+ \- = \[ \] {};':" \\ |,.<> \/ ?]
* /
function checkPassword ( ) {
var regex _password = /^(?=.*[A-ZÄÖÜ])(?=.*[a-zäöüß])(?=.*[0-9])(?=.*[!°`´ @#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]).{6,}$/ ;
var password = document . getElementById ( "passwort" ) ;
if ( ! ( checkIfElementHasValue ( password ) ) ) {
2023-05-17 13:16:27 +02:00
showErrorMessage ( password , 0 , "Bitte füllen Sie das Feld aus." )
2023-05-09 11:25:04 +02:00
return false ;
}
2023-05-17 13:16:27 +02:00
// Fehlermeldung Anzahl Zeichen
else if ( ! ( /.{6,}/ . test ( password ) ) ) {
showErrorMessage ( password , 0 ,
"Ihr Passwort muss eine Länge von mindestens sechs Zeichen haben." ) ;
2023-05-17 17:51:57 +02:00
return false ;
2023-05-17 13:16:27 +02:00
}
2023-05-09 11:25:04 +02:00
else if ( ! ( regex _password . test ( password . value ) ) ) {
2023-05-17 13:16:27 +02:00
showErrorMessage ( password , 0 ,
"Ihr Passwort muss mindestens einen "
+ "Groß- und Kleinbuchstaben (inklusive Umlaute und Eszett), "
2023-05-15 14:26:53 +02:00
+ "eine Ziffer und ein Sonderzeichen enthalten." ) ;
2023-05-09 11:25:04 +02:00
return false ;
}
else {
2023-05-17 13:16:27 +02:00
removeErrorMessage ( password , 0 ) ;
2023-05-09 11:25:04 +02:00
return true ;
}
}
/ * *
* Prüft die Übereinstimmung mit dem bereits eingegebenen Passwort .
* /
function checkRepeat _Password ( ) {
var password = document . getElementById ( "passwort" ) ;
var repeatPassword = document . getElementById ( "passwortRep" ) ;
if ( ! ( checkIfElementHasValue ( repeatPassword ) ) ) {
2023-05-17 13:16:27 +02:00
showErrorMessage ( repeatPassword , 0 , "Bitte füllen Sie das Feld aus." )
2023-05-09 11:25:04 +02:00
return false ;
}
else if ( repeatPassword . value != password . value ) {
2023-05-17 13:16:27 +02:00
showErrorMessage ( repeatPassword , 0 ,
2023-05-15 14:26:53 +02:00
"Bitte stellen Sie sicher, "
+ "dass die Passwörter miteinander übereinstimmen." ) ;
2023-05-09 11:25:04 +02:00
return false ;
}
else {
2023-05-17 13:16:27 +02:00
removeErrorMessage ( repeatPassword , 0 ) ;
2023-05-09 11:25:04 +02:00
return true ;
}
}
2023-05-09 18:05:15 +02:00
/ * *
* Prüft , ob alle Eingaben des Formulars vorhanden und gültig sind .
* Ist dies der Fall , werden die Daten verarbeitet
* und der Nutzer wird auf die Seite "Erfolgreich registriert" weitergeleitet .
* /
function checkForPossibleSubmit ( ) {
var firstName = checkFirstName ( ) ;
var lastName = checkLastName ( ) ;
var streetName = checkStreetName ( ) ;
var houseNumber = checkHouseNumber ( ) ;
var plz = checkPLZ ( ) ;
var city = checkCity ( ) ;
var emailAddress = checkEmailAddress ( ) ;
var repeatEmailAddress = checkRepeat _EmailAddress ( ) ;
var password = checkPassword ( ) ;
var repeatPassword = checkRepeat _Password ( ) ;
if ( firstName && lastName && streetName && houseNumber && plz && city &&
emailAddress && repeatEmailAddress && password && repeatPassword ) {
// TODO: Formular submitten.
2023-05-17 13:16:27 +02:00
window . location . replace ( "registrierung_erfolgreich.html" ) ;
2023-05-09 18:05:15 +02:00
}
else
{
2023-05-15 14:26:53 +02:00
// TODO: Soll irgendetwas passieren?
2023-05-09 18:05:15 +02:00
return false ;
}
2023-05-15 14:26:53 +02:00
}