Как сделать валидацию ника у формы?
Есть следующий js код:
let input = document.getElementById('nick');
//создаем элемент, в котором будет содержаться ошибка
let elem = document.createElement('div');
elem.id = 'notify';
elem.style.display = 'none';
document.getElementById('form__item1').appendChild(elem);
function errorNick() {
let errorNickname;
if (!input.validity.valid && input.value != "") {
elem.textContent = 'Можно использовать только латинские символы, цифры, - и _ ! Длина ника от 5 до 16 символов!';
elem.className = 'error';
elem.style.display = 'block';
input.className = 'pod';
errorNickname = true;
}
else {
errorNickname = false;
}
return errorNickname;
}
input.addEventListener('input', function(event){
//Добавление подъема заголовка, если в поле есть текст
if (input.value.length > 0) {
input.className = 'pod';
}
else {
input.className = '';
}
if ( 'block' === elem.style.display ) {
input.className = 'pod';
elem.style.display = 'none';
}
});
Также есть второй файл, в котором я хочу сделать перенаправление на другую страницу, если ошибок нет.
function allGood() {
if (invalidPass() && (errorNick())) {
window.location("http://www.broadsmile.ru");
}
}
Сейчас у меня у переменной errorNickname всегда ставится false, т.е. ошибок нет. Как мне это исправить? Вот сама форма:
<form method="post" id="form-reg"name="reg">
<H2>Регистрация</H2>
<div id="form__item1" class="form__item">
<div id="row" class="row">
<ion-icon name="person-circle-outline"></ion-icon>
<input id="nick" name="nick" pattern="[A-Za-z0-9\-_]{5,16}" onchange="errorNick()" required>
<label for="">Ник:</label>
</div>
</div>
<div class="form__item">
<div class="row">
<ion-icon name="mail-outline"></ion-icon>
<input id="email" type="email" name="email" required>
<label for="">E-mail:</label>
</div>
<div id="errorEmail" class="error"></div>
</div>
<div class="form__item">
<div class="row">
<ion-icon name="lock-closed-outline"></ion-icon>
<input id="pass" type="password" name="pass" required>
<label for="">Пароль:</label>
</div>
</div>
<div class="form__item">
<div class="row">
<ion-icon name="lock-closed-outline"></ion-icon>
<input id="pass2" type="password" name="pass2" onchange="return invalidPass()" required>
<label for="">Подтвердите пароль:</label>
</div>
<div id="errorPass2" class="error"></div>
</div>
<input type="submit" value="Зарегистрироваться" class="submitBotton" onclick="return allGood()">
</form>
Источник: Stack Overflow на русском