Я пытаюсь проверить данные формы до их отправки. Я уже сделал все настройки, но я не знаю, как отправить форму. Я пытался что-то искать, но почти все требуют jQuery, но я бы не стал его использовать. Не могли бы вы мне помочь, пожалуйста?
form.forEach(e => {
e.addEventListener("submit", (e) => {
e.preventDefault();
if (checkInputs())
//send the fomr's data. But how?
})
});
function checkInputs(){
if (containerForm[1].classList.contains('hide')){
const username = document.getElementById("usernameSignIn");
const password = document.getElementById("passwordSignIn");
const usernameValue = username.value.trim();
const passwordValue = password.value;
let correctUser, correctPass = false;
if (username.value === '' || username.value === null){
printError(username, "Username cannot be blank");
} else {
printSucces(username);
correctUser = true;
}
if (passwordValue === '' || passwordValue === null){
printError(password, "Password cannot be blank");
} else if (passwordValue.length < 8 || !passwordCheck(passwordValue)){
printError(password, "Incorrect password");
}
if (passwordCheck(passwordValue)){
printSucces(password);
correctPass = true;
}
return correctUser && correctPass ? true : false;
}
}
function printError(input, error){
input.parentElement.classList = "row error";
input.parentElement.querySelector('.errorMessage').innerText = error;
}
function printSucces(input){
input.parentElement.classList = "row success";
input.parentElement.querySelector('.errorMessage').innerText = null;
}
function passwordCheck(password){
let regex = /(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*()+=-\?;,./{}|\":<>\[\]\\\' ~_]).{8,}/;
return regex.test(password);
}
Использовать .Отправить()
Это будет выглядеть примерно так:
form.forEach(e => {
e.addEventListener("submit", (e) => {
e.preventDefault();
if (checkInputs())
e.target.submit();
})
});
e.preventDefault();
останавливает отправку формы, поэтому не сделайте это, если хотите, чтобы она была отправлена.
e.addEventListener("submit", (e) => {
if (!checkInputs())
e.preventDefault();
});