You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

106 lines
3.7 KiB
JavaScript

// VALIDATE THE EMAIL FORMAT
function validateEmail() {
const emailInput = document.getElementById("emailAddressInput");
const emailError = document.getElementById("emailError");
emailInput.addEventListener("input", function () {
const email = emailInput.value.trim();
const emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
if (!emailPattern.test(email)) {
emailError.textContent = "Please enter a valid email address.";
} else {
// Check email availability on the server
fetch("/check-email-availability/?email=" + email)
.then((response) => response.json())
.then((data) => {
if (data.exists) {
// Email already exists
emailError.textContent = "A user with this email already exists.";
} else {
// Email is unique
emailError.textContent = "";
}
})
.catch((error) => {
console.error("Error checking email availability:", error);
});
}
});
}
// VALIDATE THE PASSWORD STRENGTH AND PASSWORD CONFIRMATION
function validatePasswords() {
const password1Input = document.querySelector('input[name="password1"]');
const password2Input = document.querySelector('input[name="password2"]');
const passwordMatchingError = document.getElementById('passwordError');
const password1 = password1Input.value;
const password2 = password2Input.value;
// Password strength requirements
const isLengthValid = password1.length >= 8;
// Clear all error messages
passwordMatchingError.textContent = '';
passwordMatchingError.style.display = 'none';
if (password1 && password2) {
// Check for password match
if (password1 === password2) {
let errorMessage = '';
// Check for password strength
if (!isLengthValid) {
errorMessage += '- At least 8 characters\n';
errorMessage += '<br>'
}
if (errorMessage) {
passwordMatchingError.innerHTML = errorMessage;
passwordMatchingError.style.display = 'block';
}
} else {
// Passwords do not match
passwordMatchingError.textContent = 'Passwords do not match';
passwordMatchingError.style.display = 'block';
}
}
}
document.addEventListener("DOMContentLoaded", function () {
validateEmail();
// Add event listeners to both password inputs to trigger validation
const password1Input = document.querySelector('input[name="password1"]');
const password2Input = document.querySelector('input[name="password2"]');
password1Input.addEventListener('input', validatePasswords);
password2Input.addEventListener('input', validatePasswords);
// PREVENT THE FORM FROM SUBMITTING IF THE VALIDATIONS FAILS
const myForm = document.getElementById("registerForm");
myForm.addEventListener("submit", function (event) {
const emailError = document.getElementById("emailError");
const passwordMatchingError = document.getElementById('passwordError');
const message = document.getElementById("register-error-message");
const emailValid = emailError.textContent === "";
const passwordValid = passwordMatchingError.textContent === "";
if (!emailValid || !passwordValid) {
event.preventDefault();
message.classList.add("show-message");
setTimeout(function () {
message.classList.add("hide-message");
}, 3000);
}
});
});