Candle/registrierung_verhalten.js

655 lines
25 KiB
JavaScript
Raw Normal View History

// TODO: Aufräumen
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);
// 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) {
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.
* @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.
*/
function showErrorMessage(inputField, pNumber, message) {
2023-05-09 11:25:04 +02:00
inputField.style.border = "2px solid #F22C2C"
var classOfInputField = inputField.parentElement;
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.
* @param pNumber Nummer des Paragraphen Elements, welches geändert werden soll.
2023-05-09 11:25:04 +02:00
*/
function removeErrorMessage(inputField, pNumber) {
2023-05-09 11:25:04 +02:00
inputField.style.border = "2px solid #70AD47"
var classOfInputField = inputField.parentElement;
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:
// 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");
// Fehlermeldung Leeres Feld
2023-05-09 11:25:04 +02:00
if (!(checkIfElementHasValue(firstName))) {
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;
}
// 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))) {
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 {
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:
// 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");
// Fehlermeldung Leeres Feld
2023-05-09 11:25:04 +02:00
if (!(checkIfElementHasValue(lastName))) {
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;
}
// 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 {
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:
// 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
// Frießenstr. -> Fehlermeldung Erlaubte Zeichen
// D -> Fehlermeldung Anzahl Zeichen
// 1234 -> Fehlermeldung Ziffern
2023-05-17 13:16:27 +02:00
// Fri3senstraße -> Fehlermeldung Ziffern
// 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");
// Fehlermeldung Leeres Feld
2023-05-09 11:25:04 +02:00
if (!(checkIfElementHasValue(streetName))) {
showErrorMessage(streetName, 0,
"Bitte füllen Sie das Feld Straße aus.");
2023-05-09 11:25:04 +02:00
return false;
}
// 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))) {
showErrorMessage(streetName, 0,
2023-05-17 13:16:27 +02:00
"Ziffern und Zahlen dürfen nur am Ende des Straßennamens stehen.");
return false;
}
// Fehlermeldung Erlaubte Zeichen
2023-05-17 13:16:27 +02:00
else if (!(/^[A-Za-z0-9ÄÖÜäöüß' -]+$/.test(streetName.value))) {
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 {
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.
* 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
* 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))) {
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) {
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 {
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), "
+ "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,
"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;
}
}
/**
* 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");
}
else
{
// TODO: Soll irgendetwas passieren?
return false;
}
}