Есть множество готовых решений, где можно проверить правильность E-mail и сложность пароля. Вот некоторые: validate.js, jquery-validation Но что если нужно по какой то причине, написать свой?
See the Pen Check for same password by Aleksandrs (@CoolS2) on CodePen.
Валидация формы
HTML
Кроме полей и кнопки отправить, добавим список ошибок, которые будут показываться, если пользователь не учел одно из наших правил. А также добавим скрытый блок, куда будем выводить остальные ошибки.
<div class="big-black-block">
<div class="register-block">
<p class="login-button" id="reg-hide">Sign up</p>
<div class="input-block" id="input-block-register">
<input type="text" name="name_lastname" id="name_lastname_reg" placeholder="First name and last name" required />
<input type="email" name="email" id="email_reg" placeholder="E-mail" required />
<input type="password" class="register_inp" name="password_reg" id="password_reg" placeholder="Password" required>
<ul id="pswd_info">
<li id="letter" class="invalid">At least one letter</li>
<li id="capital" class="invalid">At least one capital letter</li>
<li id="number" class="invalid">At least one number</li>
<li id="length" class="invalid">Be at least 8 characters</li>
</ul>
<input type="password" class="register_inp" name="password_duplicate_reg" id="password_dup_reg" placeholder="Retype password">
<input type="hidden" id="input-from-bot-reg">
<button id="register_but">Sign up</button>
</div>
<p class="hidden-error-block"></p>
</div>
</div>
CSS
Все стили рассматривать мы не будем, а только основные
Скрываем блок со списком ошибок, а также блок для остальных ошибок. Остальные стили, чисто для того, чтобы пример выглядел приятно)
#pswd_info {
display:none;
}
.register-block .invalid, .restore-block .invalid {
padding-left:22px;
line-height:24px;
color:#ec3f41;
}
.register-block .valid, .restore-block .valid {
padding-left:22px;
line-height:24px;
color:#3a7d34;
}
.hidden-error-block{
text-align: center;
padding: 10px 0;
}
.big-black-block{
top: 0;
left: 0;
bottom: 0;
right: 0;
position: absolute;
z-index: 99998;
width: 100%;
height: 500px;
background: rgba(0,0,0, 0.5);
}
.register-block{
max-width: 350px;
overflow: hidden;
margin: 0 auto;
background: #eaeaea;
padding: 15px 40px;
border-radius: 10px;
position: relative;
top: 20px;
font-family: 'Open Sans', sans-serif;
}
.input-block input{
padding: 12px;
margin-bottom: 10px;
width: 90%;
}
.input-block button{
width:100%;
border:none;
background: #b1572f;
color:#fff;
padding: 12px;
text-transform: uppercase;
border-radius: 6px;
transition: 0.5s;
cursor:pointer;
}
.input-block button:hover{
background: #fff;
color: #b1572f;
}
JQuery
А вот тут самое интересное.
Для начало добавим функцию, которая будет проверять правильность E-mail ( есть ли точка или собачка( причем и количество собачек тоже ) в строчке.
function validateEmail(email) {
var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return re.test(email);
}
Дальше при клике на нашу кнопку, мы создаем следующие переменные:
var name = $('#name_lastname_reg').val();
var email = $('#email_reg').val();
var password = $('#password_reg').val();
var password_rep = $('#password_dup_reg').val();
Теперь будем проверять содержимое наших переменных
Если пароли не совпадают, добавим текст и цвет ошибки в наш скрытый блок
if(password != password_rep){
$('.hidden-error-block').html('The entered passwords do not match').css('color', 'red');
return false;
}
Если количество символов меньше 8, то выводим ошибку и красный цвет
else if(password.length < 8){
$('.hidden-error-block').html('Password does not match the requirements').css('color', 'red');
return false;
}
Если имя или e-mail не ввели..
else if(name == ''){
$('.hidden-error-block').html('You have to fill out all input boxes').css('color', 'red');
return false;
}
else if(email == ''){
$('.hidden-error-block').html('You have to fill out all input boxes').css('color', 'red');
return false;
}
Тут мы проверяем e-mail на наличие точки, собачки с помощью нашей функции validateEmail(), которую мы написали выше
else if(!validateEmail(email)){
$('.hidden-error-block').html('Email address you entered is not valid').css('color', 'red');
return false;
}
Тут проверяем пароль, правильно ли он продублирован, больше ли символов чем 7, есть ли в пароле и маленькие буквы и большие. И если все правильно, выводим good в поле ошибок, если нет, то выводим о том, что пароль не правильный.
else if( (password == password_rep) && (password.length > 7) && (password.match(/\d/)) && (password.match(/[A-Z]/)) && (password.match(/[A-z]/)) ){
$('.hidden-error-block').html('Good').css('color', 'green');
}else{
$('.hidden-error-block').html('Password does not match the requirements').css('color', 'red');
}
Когда пользователь начнет вводить пароль, показываем наш список правил для пароля. Также на каждый ввод символов, мы проверяем пароль на длину, регистр символов и на ввод хоть одной цифры. Если правило соблюдено добавляем класс valid, если нет, добавляем invalid (с заранее прописанными стилями). Так же, когда пользователь перейдет на следующее поле, список с правилами скрываем.
$('#password_reg').keyup(function () {
var pswd = $('#password_reg').val();
if ( pswd.length < 8 ) {
$('#length').removeClass('valid').addClass('invalid');
} else {
$('#length').removeClass('invalid').addClass('valid');
}
//validate letter
if ( pswd.match(/[A-z]/) ) {
$('#letter').removeClass('invalid').addClass('valid');
} else {
$('#letter').removeClass('valid').addClass('invalid');
}
//validate capital letter
if ( pswd.match(/[A-Z]/) ) {
$('#capital').removeClass('invalid').addClass('valid');
} else {
$('#capital').removeClass('valid').addClass('invalid');
}
//validate number
if ( pswd.match(/\d/) ) {
$('#number').removeClass('invalid').addClass('valid');
} else {
$('#number').removeClass('valid').addClass('invalid');
}
}).focus(function() {
$('#pswd_info').show(500);
}).blur(function() {
$('#pswd_info').hide(500);
});
А тут мы проверяем на повтор пароля
$('#password_dup_reg').keyup(function () {
var pas = $('#password_reg').val();
var con_pas = $(this).val();
if(pas === con_pas){
$('.register_inp').css('border-color', 'seagreen');
}else{
$('.register_inp').css('border-color', 'red');
}
});
Важно!
Вот и все. Это лишь пример, который можно еще и дорабатывать и дорабатывать, не стоит сразу копировать и вставлять себе в проект. Весь код написано исключительно для ознакомительных целей.
Задавайте свои вопросы в комментариях, рад буду ответить! Так же можете почитать о Топ 5 сниппетов