Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.02.2016, 23:42
Новичок на форуме
Отправить личное сообщение для v.classic Посмотреть профиль Найти все сообщения от v.classic
 
Регистрация: 26.02.2016
Сообщений: 5

Сравнение паролей в форме регистрации
Доброго времени суток.
Сделал небольшую форму регистрации. Вопрос в том, как сделать сравнение полей пароль и подтверждение пароля, и, если они разные, выводить сообщение об ошибке?
<!DOCTYPE html>
<html>
	<head>
		<title>Форма регистрации</title>
		<meta charset="utf-8">
		<link rel="stylesheet" href="style.css" />
	</head>
	<body>
		<form class="form" action="address.txt" method="get">
			<input id="name" name="name" type="text" placeholder="Логин" pattern="[a-zA-Zа-яА-ЯёЁ0-9]{4,90}" title="Имя должно состоять от 4 до 90 символов. Допускаются только цифры, буквы русского и латинского алфавита" required>
			<input id="email" name="email" type="email" placeholder="E-mail" title="" required>
			<input id="password" name="password" type="password" placeholder="Пароль" pattern="[a-zA-Zа-яА-ЯёЁ0-9]{6,90}" title="Пароль должен состоять от 6 до 90 символов. Допускаются только цифры, буквы русского и латинского алфавита" required>
			<input id="password-check" name="password-check" type="password" placeholder="Подтверждение пароля" title="" required>
			<input id="pediki" name="pediki" type="text" placeholder="Поле, необязательное для заполнения">
			<input id="submit" name="submit" type="submit" value="Создать аккаунт">
		</form>
		<script>

		</script>
	</body>
</html>


Код:
.form { 
	background-color: rgb(238,238,238); margin: 50px auto; width: 335px; padding: 20px 10px 10px; border-radius: 10px;
    box-shadow: 0 0 10px #ccc;
}
.form input { padding: 10px; margin: 0px 5px 5px; width: 300px; box-sizing: padding-box; }
.form .submit { width: 200px; }
Ответить с цитированием
  #2 (permalink)  
Старый 27.02.2016, 00:30
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

v.classic,
вешать проверку данных нужно на onsubmit формы и наверно предусмотреть место для вывода ошибки
Ответить с цитированием
  #3 (permalink)  
Старый 27.02.2016, 01:25
Новичок на форуме
Отправить личное сообщение для v.classic Посмотреть профиль Найти все сообщения от v.classic
 
Регистрация: 26.02.2016
Сообщений: 5

Место вывода ошибки - в title.
Ответить с цитированием
  #4 (permalink)  
Старый 27.02.2016, 02:01
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

v.classic,
<!DOCTYPE html>
<html>
	<head>
		<title>Форма регистрации</title>
		<meta charset="utf-8">
<style type="text/css">
[title="err"]{
  border: solid 2px red;
}

</style>
	</head>
	<body>
		<form class="form" action="address.txt" method="get" >
	 	    <input id="password" name="password" type="password" placeholder="Пароль"  >
			<input id="password-check" name="password-check" type="password" placeholder="Подтверждение пароля" title="" >
			<input id="submit" name="submit" type="submit" value="Создать аккаунт">
		</form>
		<script>
           window.addEventListener('DOMContentLoaded', function() {
             var form = document.querySelector('.form'),
             pas = form.querySelectorAll('#password, #password-check');
              form.addEventListener('submit', function(e) {
               var err = !(pas[0].value && (pas[0].value ==  pas[1].value))
               pas[1].setAttribute("title", err ? 'err' : '');
               err && e.preventDefault();
             }, false);
              pas[1].addEventListener('input', function(e) {
               var err = !(pas[0].value ==  pas[1].value)
               pas[1].setAttribute("title", err ? 'err' : '');
             }, false);


               });
		</script>
	</body>
</html>
Ответить с цитированием
  #5 (permalink)  
Старый 27.02.2016, 07:16
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

рони,
а что насчет setCustomValidity? Или не советуешь? Намного короче получается.
<style>
        input[type=password]:invalid{
           border: solid 2px red;
        }
    </style>
           <script>
        document.addEventListener('DOMContentLoaded', function () {
            var pass1 = document.querySelector('#password'),
                pass2 = document.querySelector('#password-check')
            pass1.addEventListener('input', function () {
                this.value != pass2.value ? pass2.setCustomValidity('Password incorrect') : pass2.setCustomValidity('')
            })
            pass2.addEventListener('input', function (e) {
                this.value != pass1.value ? this.setCustomValidity('Password incorrect') : this.setCustomValidity('')
            })
        })
    </script>
    <form class="form" action="address.txt" method="get">
        <input id="password" name="password" type="password" placeholder="Пароль">
        <input id="password-check" name="password-check" type="password" placeholder="Подтверждение пароля" title="">
        <input id="submit" name="submit" type="submit" value="Создать аккаунт">
    </form>

Последний раз редактировалось destus, 27.02.2016 в 07:39.
Ответить с цитированием
  #6 (permalink)  
Старый 27.02.2016, 07:53
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

destus,
ок но как же 'submit'?
Ответить с цитированием
  #7 (permalink)  
Старый 27.02.2016, 08:02
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

Сообщение от рони Посмотреть сообщение
destus,
ок но как же 'submit'?
А submit и не будет происходить, если в setCustomValidity передаем непустую строку. Юзать советуешь или нет?
Ответить с цитированием
  #8 (permalink)  
Старый 27.02.2016, 09:22
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Сообщение от destus
А submit и не будет происходить
тоды проверку на пусто нуно и можно если нужны только браузеры с поддержкой HTML5
P.S required
Ответить с цитированием
  #9 (permalink)  
Старый 27.02.2016, 10:05
Новичок на форуме
Отправить личное сообщение для v.classic Посмотреть профиль Найти все сообщения от v.classic
 
Регистрация: 26.02.2016
Сообщений: 5

Спасибо, сам принцип работает. Но как сделать так, чтобы оно показывало, как ошибку, а не просто подсвечивало при наведении как, допустим, в имени?

Последний раз редактировалось v.classic, 27.02.2016 в 10:08.
Ответить с цитированием
  #10 (permalink)  
Старый 27.02.2016, 11:44
Новичок на форуме
Отправить личное сообщение для v.classic Посмотреть профиль Найти все сообщения от v.classic
 
Регистрация: 26.02.2016
Сообщений: 5

Как сделать, чтобы в случае несовпадения пароля поле определялось как invalid?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите найди ошибку в форме регистрации IONEX jQuery 6 20.08.2015 18:25
Помооогииитеее!!!)))Форма входа меняется на форму регистрации с помощью свойств visib dksu Элементы интерфейса 2 17.03.2013 13:15
Как сделать что бы при регистрации человека на моем сайте у него не появлялось... drunkwolfs Общие вопросы Javascript 2 07.08.2012 10:58
Проверка наличия логина в БД при регистрации, с помощью ajax storng Общие вопросы Javascript 4 09.04.2010 20:24