Телеграм: @bazarow_ru Почта: mihail@bazarow.ru

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

Просмотров: 15313

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

Встала задачка сделать валидацию пароля и его подтверждения в стандартной форме регистрации сайта под управлением Битрикс. Проверять будем с помощью 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="/пути к картинке НЕ ОКЕЙ">'; 
    .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"
  ype="text"
  name="REGISTER[<?=$FIELD?>]"
  id="REGISTER[<?=$FIELD?>]"
  value="<?=$arResult["VALUES"][$FIELD]?>"
  onkeydown="return name_up();"/><
Guest 24.07.2015
Ну как бы запрос на регистрацию можно подменить запросом и ваш JS прикурит! Да и вообще клиентская валидация должна совпадать с серверной!
Михаил Базаров 25.07.2015
Цитата
Guest пишет:
Ну как бы запрос на регистрацию можно подменить запросом и ваш JS прикурит! Да и вообще клиентская валидация должна совпадать с серверной!
JS однозначно прикурит, но иногда, когда нужно просто реализовать функционал, при этом не сильно нагрузить сервер - проще поступить именно так. Хотя, конечно вы правы- все должно быть идеально- не всегда это нужно, чаще никогда

Записная книжка разработчика

Примерно с 2013-го года пишу заметки по разработке сайтов на Битрикс.
Вы можете задавать уточняющие вопросы в комментариях- отвечаю или дополняю заметки по возможности.

Старые шаблоны битрикс для простой верстки Просмотров: 18217 Новые версии типового интернет-магазина, который идет в комплекте с Битрикс (от 12 версии ... Адаптивное гамбургер меню для битрикс Просмотров: 15172 Заметка коротенькая, но решил оставить ее - так как самому часто нужно нечто подобное. В а... Скопировать номер телефона из поля пользователя в телефон для регистр... Просмотров: 2841 Задача, на конкретном сайте: раньше все пользователи регистрировались по стандартному режи... Заполнить коэффициент единицы измерения (MEASURE_RATIO) из свойства э... Просмотров: 6498 Задачка: Каталог наполняется из 1С, но 1С не передает коэффициент единицы измерения (особе... Открытие мобильного приложения Apache Cordova по ссылке Просмотров: 1194 Достаточно часто нужно реализовывать открытие мобильного приложения по ссылке. Например: п... Вывод элементов с помощью API битрикс Просмотров: 24003 Иногда, выводить элементы инфоблока с помощью компонентов, может оказаться избыточным. Нап... Массово: применить наценку ко всем товарам каталога с пересчетом от б... Просмотров: 6401 Рассмотрим как, в магазине работающем на 1С-битрикс, массово применить наценку на все това... Свойство: привязка к Яндекс:Картам - вывести из нескольких элементов ... Просмотров: 18697 Предположим, что у вас есть инфоблок со свойством "Привязка к яндекс картам". В этом инфоб... Вывести дополнительное пользовательское поле, использование полей в ф... Просмотров: 16795 Если вам нужно вывести дополнительное пользовательское поле типа "Привязка к разделам инфо... Установка веб-сервера LAMP на ubuntu 20.04 LTS, оптимизированный под ... Просмотров: 12793 В последнее время, плотно пересел c macOS на ubuntu, и решил настроить себе полноценное ра... Изменить размер картинок на лету в битрикс Просмотров: 48894 Встала задачка: на собственном сайте, уменьшить размер превьюшек картинок у анонсов раздел... Вывести артикул в печатную форму бланка заказа Просмотров: 1114 Задача: в печатную форму бланка заказа добавить артикулы товаров и данные о пользователе. ... Добавить свойство в административную форму заказа Просмотров: 3802 Задача, кастомизировать административную форму заказа: добавить свойство заказа в шапку фо... Автоматическая загрузка каталогов из csv файлов в Битрикс Просмотров: 11828 Если требуется настроить автоматический импорт каталогов из csv файлов, от поставщиков. В... Помечаем новинки лейблом в каталоге битрикс Просмотров: 20877 Достаточно часто, при разработке каталога товаров или интернет магазина на системе управле... Простой WEB сервер на ubuntu, для Битрикс Просмотров: 35965 Расскажу как по быстрому сконфигурировать WEB сервер для работы с Битрикс. Безо всяких ngi... Установка Битрикс24 "Интернет-Магазин + CRM" на один домен и настройк... Просмотров: 1709 Задача: установить лицензию "Интернет-Магазин + CRM" на один домен. Что бы crm была доступ... Denwer c PHP 7.1.8 и MYSQL 5.7 оптимизированный для Битрикс Просмотров: 30811 В последнее время, все чаще приходиться работать на Windows, хотя и не люблю эту ОС- с точ... Очистка корзины в 1С-Битрикс одним нажатием Просмотров: 29636 В стандартной корзине Битрикс не хватает кнопки для полной очистки корзины одним нажатием... Вывести товары из того же раздела в карточке товара Просмотров: 18895 Немножко топорный, но все же вполне действенный способ по выводу внутри подробной карточки...