Как можно проверить форму до ее отправки?

Библиотека для AJAX - Axios.
-------------------------------------
Собсна проблема: при отправке формы должна пройти проверка существования пользователя в базе данных через ajax,
проблема заключается в том что без async await происходит проверка, и даже если пользователя не существует то регистрация(переход на страницу регистрации) не происходит, ну вроде понятно почему, асинхронные функции, все дела.

В случае использования async await происходит проверка существования пользователя в БД, происходит вывод сообщения (alert) о том что пользователь уже существует, но после закрытия окна alert происходит регистрация пользователя несмотря на то что он существует :/. Если выводить не окно alert а текстовое сообщение в каком нибудь теге p то произойдет то же самое.
--------------------------------------------
P.S Скрипт (на PHP) проверки существования пользователя на сервере работает правильно
--------------------------------------------
Форма
<form  action="/user/register" method="POST" onsubmit="return checkForm()">
                            <input type="text" name="name" placeholder="Имя, фамилия">
                            <input type="email" id="regEmail" name="email" placeholder="E-mail">
                            <input type="password" name="pass" placeholder="Пароль">
                            <input type="submit" name="subReg" value="Зарегестрироваться" >
                        </form>

Скрипт проверки существования пользователя, правильности пароля и в общем, проверки формы.
//общая проверка форма
function checkForm() {
    var parol =  checkParol(2);
    var email =  checkEmailExist();
    if(parol == true) //если пароль правилен то проверяем почту
        if(email==true) //если почта правильна, т.е пользователь не существует, то возвращается true и форма отправляется 
            return true;
    return false; //иначе false и форма не отправляется
}
//проверка существования пользователя в БД
function checkEmailExist() {
    //получаем почту
    var email = document.getElementById("regEmail").value;
    //Отправляем запрос на сервер и проверяем существует ли юзверь
    var isExist = axios.post('ajax/checkEmailExist/'+email)
      .then(function (response) {
        console.log(response);
        return response.data;
      })
      .catch(function (error) {
        console.log(error);
      });
    console.log(isExist);
    if (isExist==true) {
        alert("Пользователь уже существует");
        return false;
    } else {
        return true;
    }
} 
//простая проверка пароля
function checkParol($num) {
    var parol = document.getElementsByName("pass")[$num-1].value;
    console.log(parol);
    if (parol.length <= 6)
    {
        alert("Пароль должен быть не короче 6 символов");
        return false;
    }
    return true;
    //return checkEmailExist();
}
  • Вопрос задан
  • 161 просмотр
Пригласить эксперта
Ответы на вопрос 1
@Aricus
За предотвращение действия по умолчанию отвечает функция event.preventDefault
Также советую перейти с чистого js на jquery, работа в DOM с ним гораздо удобнее.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы