Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.07.2014, 17:31
Новичок на форуме
Отправить личное сообщение для AsCross Посмотреть профиль Найти все сообщения от AsCross
 
Регистрация: 18.07.2014
Сообщений: 3

Форма регистрации (соответствие паролей)
Сделал форму регистрации (пока без отправки куда либо). Хочу сделать проверку на соответствие паролей(пароль:*****; повторите пароль:******), что бы оно выводило возле поля "повторите пароль" сообщение в случае если пароли не совпадают.


вот JS
if (window.addEventListener) window.addEventListener("load", init, false);


function init() {
    for (var i = 0; i < document.forms.length; i++) {
        var form = document.forms[i];

        var formValidation = false;

        for (var j = 0; j < form.elements.length; j++) {
            var e = form.elements[j];

            
            

            
            var pattern = e.getAttribute("data-val");

            if (pattern) {
                e.onkeyup = validateInput; 
                formValidation = true; 
            }
        }
        if (formValidation) {
            form.onsubmit = validateForm; 
        }


    }

}


function validateInput() {
    var pattern = this.dataset.val,
        msg = this.dataset.valMsg,
        msgId = this.dataset.valMsgId,
        value = this.value;

    var res = value.search(pattern);
    if (res == -1) {
        document.getElementById(msgId).innerHTML = "<img src='bad.png'/>" + msg;
        this.className = "error";
    }
    else {
        document.getElementById(msgId).innerHTML = "<img src='ok.png'/>";
        this.className = "valid";
    }

    


}

function validateForm() {

    var invalid = false;

    for (var i = 0; i < this.elements.length; ++i) {
        var e = this.elements[i];
        if (e.type == "text", "password" && e.onkeyup != null) {
            e.onkeyup();
            if (e.className == "error") invalid = true;
        }
    }

    if (invalid) {
        alert("Допущены ошибки при заполнении формы.");
        return false;
    }
}

function pass() {
    
    var pass1 = document.getElementById("pass1").value;
    var pass2 = document.getElementById("pass2").value;

    if (pass1 != pass2) {
    alert("Пароли не совпадают");
    
}
}



Ну и HTML
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Регалка</title>
    <script type="text/javascript" src="script.js"></script>

   

    <style>
        .error {
            background-color: Pink;
        }

        .valid {
            background-color: LightGreen;
        }
    </style>

</head>
<body>
   

    <form name="form1">

        Имя <input type="text" 
                   name="fname" 
                   data-val="\S" 
                   data-val-msg="Введите имя" 
                   data-val-msg-id="fname" />
        <span id="fname"></span> <br />
        
        Фамилия <input type="text" 
                       name="sname" 
                       data-val="\S" 
                       data-val-msg="Введите фамилию" 
                       data-val-msg-id="sname" />
        <span id="sname"></span><br />

        Логин <input type="text" 
                     name="login" 
                     data-val="\S[A-Za-z0-9]" 
                     data-val-msg="Введите логин" 
                     data-val-msg-id="login" />
        <span id="login"></span><br />

        Пароль <input type="password" 
                      name='pass1' 
                      data-val="\S[A-Za-z0-9]{7,8}" 
                      data-val-msg="Введите пароль(длинна пароля должна состоять не мение 8 символов)" 
                      data-val-msg-id="pass1" />
        <span id='pass1'></span>
        
                                                                     <br />

        Подтверждение пароля <input type="password" 
                                    value="" 
                                    name='pass2' 
                                    onblur="pass"
                                    data-val="\S[A-Za-z0-9]" 
                                    data-val-msg="Пароли должны совпадать" 
                                    data-val-msg-id="pass2" /> 
        
        <span id='pass2'></span>
                                                                     <br />
        Email <input type="text" 
                     name="mail" 
                     data-val="(\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,6})" 
                     data-val-msg="Введите email" 
                     data-val-msg-id="mail" />
        <span id="mail"></span><br />

        Телефон <input type="text" 
                       name="phone" 
                       placeholder="067 123 45 67" 
                       data-val="\d{3} \d{3} \d{2} \d{2}" 
                       data-val-msg="Введите номер телефона" 
                       data-val-msg-id="phone" />
        <span id="phone"></span>
        
        <br />Выберите ваш пол:<br />
        <input type="radio" name="pol" checked="checked" />Женщина
        <input type="radio" name="pol" />Мужчина
       
        
        <br /><br />
        <input type="reset" name="reset1" value="Заполнить заново" />
        <input type="submit" value="Регистрация" />
    </form>


</body>
Ответить с цитированием
  #2 (permalink)  
Старый 18.07.2014, 22:58
Профессор
Посмотреть профиль Найти все сообщения от newobject
 
Регистрация: 10.07.2014
Сообщений: 145

На ночь глядя голова не соображает, сплел вот такую вот ахинею


<input name="pass" />
<input name="pass" />
<div id="iscorrect" style="display: none">Не верно!</div>
<script>
input1=document.getElementsByName("pass")[0]
input2=document.getElementsByName("pass")[1]
div=document.getElementById("iscorrect")
f=function(another, flagvalue){return function(){
var flag=flagvalue;
if((!flag)&&(another.value!==this.value)) return div.style.display="block"; div.style.display="none"}}
input1.onblur=f(input2, true)
input2.onblur=f(input1, false)
</script>

толком не тестил, если будете пробовать, отпишитесь.

PS При такой реализации всплывает одна проблемка: если юзер после корректного ввода полезет править снова первое поле, а второе потом не поправит, собщение не всплывет. Это можно разрешить на крайняк, если надо, дополнительной проверкой по клику на следующем (после второго инпута - например мыло) поле. Слишком усложнять логику -- тоже не Ъ.

Последний раз редактировалось newobject, 18.07.2014 в 23:23.
Ответить с цитированием
  #3 (permalink)  
Старый 23.07.2014, 12:46
Новичок на форуме
Отправить личное сообщение для AsCross Посмотреть профиль Найти все сообщения от AsCross
 
Регистрация: 18.07.2014
Сообщений: 3

Не работает((( Кто то может добавить проверку на соответствие паролей между собой и вписать это прямо в мой код? Буду очень благодарен!
Ответить с цитированием
  #4 (permalink)  
Старый 23.07.2014, 14:17
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

alert("Пароли не совпадают");


Задача не имеет смысла. В браузерах пароли не проверяют, ибо их туда придется загрузить, а это значит любой юзер в два счета узнает все пароли всех юзеров и зайдет под любым. Даже аяксом в браузер пароль, один, для юзера который сказал как его зовут - не грузят. Ибо и в браузере или по заголовку можно его увидеть и ввести все совпадет.

Ну то есть вам все равно не пригодится работающий скрипт проверки пароля, поскольку оно делается только на сервере.
Ответить с цитированием
  #5 (permalink)  
Старый 23.07.2014, 14:23
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Цитата:
(пока без отправки куда либо).
Так не делается, и в этом смысла нет. Допустим есть такой юзер в БД - вы скажете об этом юзеру после отправки формы. Допустим есть такой имейл, или там телефон - аналогично. Все эти проверки по существу включают и проверку пароля, поскольку делаются на сервере. В браузер приходит только ответ, типа "облом" или "ок". Что касается проверки форматов и синтаксиса, то пусть каждый пишет в силу своей грамотности. Не мешайте людям тупить и они поумнеют.
Ответить с цитированием
  #6 (permalink)  
Старый 23.07.2014, 17:40
Новичок на форуме
Отправить личное сообщение для AsCross Посмотреть профиль Найти все сообщения от AsCross
 
Регистрация: 18.07.2014
Сообщений: 3

Я хочу что бы при регистрации проверяло соответствие паролей между собой когда человек будет их вводить, то есть не отправлять форму на сервер пока они не будут одинаковы. Сервер это отдельный разговор, мне именно что бы "облом" или "ок".
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
откуда была отправлена форма ? avanesov89 Общие вопросы Javascript 3 16.04.2014 17:50
не работает форма в окне, вызванном jquery page slide ikar jQuery 0 31.07.2011 22:55
Форма регистрации MasterYoda AJAX и COMET 0 22.04.2011 07:40
Форма обратной связи или регистрации mnemox Работа 2 11.01.2011 08:36
Проверка наличия логина в БД при регистрации, с помощью ajax storng Общие вопросы Javascript 4 09.04.2010 20:24