Валидация пароля и подтверждения при регистрации в битрикс

4460  |  2

Встала задачка сделать валидацию пароля и его подтверждения в стандартной форме регистрации сайта под управлением Битрикс. Проверять будем с помощью javascript прямо на лету: на количество символов в пароле и совпадениt подтверждения пароля...пароля.

Итак: имеем страницу на сайте, на которую вывели стандартную форму регистрации main.register. Копируем ее шаблон в шаблон своего сайта и открываем на редактирование template.php это шаблона

Находим два input которые отвечают за пароль и подтверждение пароля

Примерно: 86-ая строчка - ввод пароля

<input size="30" type="password" name="REGISTER[<?=$FIELD?>]" value="<?=$arResult["VALUES"][$FIELD]?>" autocomplete="off" class="bx-auth-input" />

и 103-ая строчка- подтверждение пароля

<input size="30" type="password" name="REGISTER[<?=$FIELD?>]" value="<?=$arResult["VALUES"][$FIELD]?>" autocomplete="off" />

И приводим каждое вот к такому виду:

Ввод пароля:

<input type="password" name="REGISTER[<?=$FIELD?>]" autocomplete="off" class="bx-auth-input" id="pass_id" maxlength="20" size="40"
onkeypress="CountPass('pass_id')" onfocus="CountPass('pass_id')"
onkeyup="CountPass('pass_id')" value="" />

<div id="pass_correct"></div>

<i>Вы ввели <span id="pass_view">0</span> символов</i>

Подтверждение пароля:

<input type="password" name="REGISTER[<?=$FIELD?>]" autocomplete="off" size="30" id="repass_id"
onkeypress="CorrectPass('repass_id')" onfocus="CorrectPass('repass_id')"
onkeyup="CorrectPass('repass_id')" value="" />

<div class="arrows_ook" id="repass_correct"></div>

И размещаем тут же или во внешнем подключаемом файле вот такой скрипт- комментарии по скрипту внутри


<script type="text/javascript">

function CountPass(item) {
//Назначаем ID поля с паролем
var item_view = 'pass_view';
//назначаем ID блока для вывода сообщения
var item_correct = 'pass_correct';
//Проверяем колличество символов в поле
document.getElementById(item_view).innerHTML = document.getElementById(item).value.length++;
//если символов 6 и более
if (document.getElementById(item).value.length >= 6) {
document.getElementById(item_correct).innerHTML = '<img src="/пути к картинке ОКЕЙ">';
}
//Если смволов меньше шести
else {
document.getElementById(item_correct).innerHTML = '<img src="/пути к картинке НЕ ОКЕЙ">';
}
}

function CorrectPass(item) {
//Проверяем совпадение пароля с полем ввода пароля
var item_pass_value = document.getElementById('pass_id').value;
var item_pass_length = document.getElementById('pass_id').value.length
//назначаем ID блока для вывода сообщения иколичество символов
var item_correct = 'repass_correct';
if (item_pass_length >= 6) {
//Если все совпало
if (document.getElementById(item).value == item_pass_value) {
document.getElementById(item_correct).innerHTML = '<img src="/пути к картинке ОКЕЙ">';
document.getElementById('check_repass').value = 1;
}
//Если не совпало
else if (document.getElementById(item).value.length >= 6) {
document.getElementById(item_correct).innerHTML = '<img src="/пути к картинке НЕ ОКЕЙ">';
document.getElementById('check_repass').value = 0;
}
}
checkAll();
} </script>

Должно получиться примерно так

И не большая фенька: замена первой буквы на заглавную в полях имя и фамилия, если пользователь набрал все с маленькой

Поле, примерно в 136-ой строчке:

<input size="30" type="text" name="REGISTER[<?=$FIELD?>]" value="<?=$arResult["VALUES"][$FIELD]?>" />

Меняем на

<script type="text/javascript">
function name_up()
{
if(document.getElementById("REGISTER[NAME]").value.length==1) document.getElementById("REGISTER[NAME]").value=document.getElementById("REGISTER[NAME]").value.toUpperCase();
if(document.getElementById("REGISTER[LAST_NAME]").value.length==1) document.getElementById("REGISTER[LAST_NAME]").value=document.getElementById("REGISTER[LAST_NAME]").value.toUpperCase();
}
</script>

<input size="30" type="text" name="REGISTER[<?=$FIELD?>]" id="REGISTER[<?=$FIELD?>]" value="<?=$arResult["VALUES"][$FIELD]?>" onkeydown="return name_up();"/><

Пример работы здесь Магазин Березка

Расскажи друзьям-то:
Уважаемый читатель! В связи с участившимся спамом в комментариях, возможность писать доступна только для зарегистрированных пользователей
Зарегистрироваться Войти Напомнить пароль
Или войти через социальную сеть:
Guest
Ну как бы запрос на регистрацию можно подменить запросом и ваш JS прикурит! Да и вообще клиентская валидация должна совпадать с серверной!
Михаил Базаров
Цитата
Guest пишет:
Ну как бы запрос на регистрацию можно подменить запросом и ваш JS прикурит! Да и вообще клиентская валидация должна совпадать с серверной!
JS однозначно прикурит, но иногда, когда нужно просто реализовать функционал, при этом не сильно нагрузить сервер - проще поступить именно так. Хотя, конечно вы правы- все должно быть идеально- не всегда это нужно, чаще никогда

© 2011—2016 Частный вебмастер: ИП Базаров, ОГРНИП: 315784700173692. Работает на 1С-Битрикс.
Копирование материалов запрещено: "ГК РФ, часть 4, раздел VII: Права на результаты интеллектуальной деятельности".

Информация размещенная на сайте, не является публичной офертой. Политика конфеденциальности
x
Как к Вам обращаться? *
Ваша электронная почта: *
Доп. материалы (логотип, тех. задание):
 
Обзор
Текст сообщения: