Регистрация пользователей: регистр полей "как в предложении"

Проблемы с установкой или работой phpBB 3.1.x? Получите помощь здесь!
С 1 июля 2018 года phpBB Group прекращает поддержку phpBB версии 3.1.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.1 до 1 января 2019 года.
Подробнее: Окончание поддержки phpBB 3.1.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
Alecto
phpBB 3.0.12
Сообщения: 2857
Стаж: 15 лет 4 месяца
Откуда: Украина! Харьков
Благодарил (а): 68 раз
Поблагодарили: 240 раз

Регистрация пользователей: регистр полей "как в предложении"

Сообщение Alecto »

Меня очень напрягает, когда пользователи вводят ники, имена, и прочие поля как хотят, не придерживаясь регистра.
Хочется чтобы ряд важных для меня полей принудительно устанавливался в регистр "как в предложении".
Только скриптовым экстом оформлять? или может надоумите более оптимальным решением?
Аватара пользователя
Alecto
phpBB 3.0.12
Сообщения: 2857
Стаж: 15 лет 4 месяца
Откуда: Украина! Харьков
Благодарил (а): 68 раз
Поблагодарили: 240 раз

Re: Регистрация пользователей: регистр полей "как в предложе

Сообщение Alecto »

набросал вариант

Код: Выделить всё

$('input[type="text"]').keyup(function() {
	if ($.inArray(jQuery(this).attr('name'), ['username', 'pf_phpbb_location', 'pf_original_name']) >= 0) {
		var txt = $(this).val().toLowerCase();
		$(this).val(txt.replace(/^(.)|\s(.)|-(.)/g, function($1) {return $1.toUpperCase();}));
	}
});

$('input[type="text"]').bind('input paste', function(e) {
	if ($.inArray($(this).attr('name'), ['username', 'location', 'pf_original_name']) >= 0) {
		var txt = $(this).val().toLowerCase();
		$(this).val(txt.replace(/^(.)|\s(.)|-(.)/g, function($1) {return $1.toUpperCase();}));
	}
});
может кто опытный проверить на ошибки?

две идентичные фунции.
первая отрабатывает ввод с клавиатуры, вторая - вставку из клипборда, чтобы отловить особо ушлых товарищей.
обе работают.

вопрос - как объединить их в одну? через вызов функции не получится, так как используется this

Добавлено спустя 7 минут 44 секунды:
Re: Регистрация пользователей: регистр полей "как в предложении"
сам спросил, сам ответил
вроде вот так заработало

Код: Выделить всё

$('input[type="text"]').bind('input paste keyup', function(e) {
	if ($.inArray(jQuery(this).attr('name'), ['username', 'pf_phpbb_location', 'pf_original_name']) >= 0) {
		var txt = $(this).val().toLowerCase();
		$(this).val(txt.replace(/^(.)|\s(.)|-(.)/g, function($1) {return $1.toUpperCase();}));
	}
});
сразу спрошу: какие условие использовать, чтобы скрипт отрабатывал только на странице регистрации и на странице профиля?
Аватара пользователя
xisp
phpBB 3.0.0 RC7
Сообщения: 1798
Стаж: 12 лет 11 месяцев
Благодарил (а): 97 раз
Поблагодарили: 91 раз
Забанен: Бессрочно

Re: Регистрация пользователей: регистр полей "как в предложе

Сообщение xisp »

Alecto писал(а):может кто опытный проверить на ошибки?
Главная ошибка- валидация на стороне клиента.
Данные нужно валидировать на стороне сервера.
phpBBex
Аватара пользователя
Alecto
phpBB 3.0.12
Сообщения: 2857
Стаж: 15 лет 4 месяца
Откуда: Украина! Харьков
Благодарил (а): 68 раз
Поблагодарили: 240 раз

Re: Регистрация пользователей: регистр полей "как в предложе

Сообщение Alecto »

xisp писал(а):Данные нужно валидировать на стороне сервера.
экст на php для этого не напишу - не знаю на столько PHP.
jquery вполне устраивает, 1 - насколько правильно, может какие ошибки в скрипте бросаются в глаза?
2 - подскажите переменные для условия срабатывания срикпта ТОЛЬКО в форме регистрации и ТОЛЬКО в профиле пользователя в его личном кабинете.
Аватара пользователя
Алг
Former team member
Сообщения: 933
Стаж: 12 лет 8 месяцев
Откуда: Израиль
Благодарил (а): 72 раза
Поблагодарили: 248 раз

Re: Регистрация пользователей: регистр полей "как в предложе

Сообщение Алг »

xisp писал(а):Данные нужно валидировать на стороне сервера.
это не валидация данных, а всего лишь причесывание перед отправкой на сервер. В данном случае делать на стороне клиента - это нормально
1. С первого взгляда ничего вроде в глаза не бросается. И к тому же работает.
2 - это попозже
Там упёртость и инертность, могут, кстати, в морду дать.
А ты проявляй интеллигентность, постарайся убеждать...

Т. Шаов
Аватара пользователя
Alecto
phpBB 3.0.12
Сообщения: 2857
Стаж: 15 лет 4 месяца
Откуда: Украина! Харьков
Благодарил (а): 68 раз
Поблагодарили: 240 раз

Re: Регистрация пользователей: регистр полей "как в предложе

Сообщение Alecto »

Алг писал(а):причесывание перед отправкой на сервер
совершенно верно, только не совсем перед отправкой, скорее в процессе ввода данных.
очень не нравятся любители заполнять поля таким образом как
иМЯ,имя,ИМЯ
город,ГОРОД,гОРОД
итд.
Алг писал(а):2 - это попозже
спасибо, буду ждать
Anvar
Former team member
Сообщения: 1965
Стаж: 15 лет 1 месяц
Благодарил (а): 57 раз
Поблагодарили: 622 раза

Re: Регистрация пользователей: регистр полей "как в предложе

Сообщение Anvar »

$('input[type="text"]') будет применён ко всем текстовым полям, к которым может быть и не требуется.

Код: Выделить всё

<!-- IF SCRIPT_NAME == 'ucp' -->
<!-- ENDIF -->
Аватара пользователя
Alecto
phpBB 3.0.12
Сообщения: 2857
Стаж: 15 лет 4 месяца
Откуда: Украина! Харьков
Благодарил (а): 68 раз
Поблагодарили: 240 раз

Re: Регистрация пользователей: регистр полей "как в предложе

Сообщение Alecto »

Alecto писал(а): if ($.inArray(jQuery(this).attr('name'), ['username', 'pf_phpbb_location', 'pf_original_name']) >= 0) {
затем вот тут происходит сужение до конкретных полей
Anvar писал(а):<!-- IF SCRIPT_NAME == 'ucp' -->
слишком большой диапазон, это и форма логина и личный кабинет целиком.

Добавлено спустя 6 минут 55 секунд:
Re: Регистрация пользователей: регистр полей "как в предложении"

Код: Выделить всё

$('#username, #pf_phpbb_location, #pf_original_name').bind('input paste keyup', function(e) {
	var txt = $(this).val().toLowerCase();
	$(this).val(txt.replace(/^(.)|\s(.)|-(.)/g, function($1) {return $1.toUpperCase();}));
});
вот так кстати тоже работает.
может быть этот вариант лучше? сразу выборка по айди нужных элементов... вроде.
Аватара пользователя
Alecto
phpBB 3.0.12
Сообщения: 2857
Стаж: 15 лет 4 месяца
Откуда: Украина! Харьков
Благодарил (а): 68 раз
Поблагодарили: 240 раз

Re: Регистрация пользователей: регистр полей "как в предложе

Сообщение Alecto »

можно ли привязать условие к языковым переменным?
L_ITEMS_REQUIRED встречается только в шаблоне ucp_register.html
L_PROFILE_INFO_NOTICE - только в ucp_profile_profile_info.html

Код: Выделить всё

<!-- IF SCRIPT_NAME == 'ucp' and  L_ITEMS_REQUIRED -->
как-то так?
Аватара пользователя
Алг
Former team member
Сообщения: 933
Стаж: 12 лет 8 месяцев
Откуда: Израиль
Благодарил (а): 72 раза
Поблагодарили: 248 раз

Re: Регистрация пользователей: регистр полей "как в предложе

Сообщение Алг »

Alecto писал(а):('#username, #pf_phpbb_location, #pf_original_name').bind('input paste keyup', function(e) {
var txt = $(this).val().toLowerCase();
$(this).val(txt.replace(/^(.)|\s(.)|-(.)/g, function($1) {return $1.toUpperCase();}));
});

вот так кстати тоже работает.
может быть этот вариант лучше? сразу выборка по айди нужных элементов... вроде.
вариант нормальный, можно такой оставить, одно замечание: почему для привязки события ты используешь устаревший метод bind вместо оn?
Там упёртость и инертность, могут, кстати, в морду дать.
А ты проявляй интеллигентность, постарайся убеждать...

Т. Шаов
Аватара пользователя
Alecto
phpBB 3.0.12
Сообщения: 2857
Стаж: 15 лет 4 месяца
Откуда: Украина! Харьков
Благодарил (а): 68 раз
Поблагодарили: 240 раз

Re: Регистрация пользователей: регистр полей "как в предложе

Сообщение Alecto »

такой был в примере.
спасибо за замечание, заменил на ОН - работает.
теперь с условиями разобраться бы - и можно на основе включать.
Аватара пользователя
Alecto
phpBB 3.0.12
Сообщения: 2857
Стаж: 15 лет 4 месяца
Откуда: Украина! Харьков
Благодарил (а): 68 раз
Поблагодарили: 240 раз

Re: Регистрация пользователей: регистр полей "как в предложе

Сообщение Alecto »

попробовал с языковыми - не получилось, либо я их не правильно вставлял в условие.
решил сначала отсечь выполнение скрипта проверкой на UCP, а затем еще проверкой url на характерные подстроки для:
- страницы регистрации (ложное срабатывание при просмотре правил, но это не мешает)
- профиль как раздел
- профиль как подраздел

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

Код: Выделить всё

	<!-- IF SCRIPT_NAME == "ucp" -->
	if(window.location.href.indexOf('mode=register') > -1 || window.location.href.indexOf('i=164') > -1 || window.location.href.indexOf('mode=profile_info') > -1) {

		$('#username, #pf_phpbb_location, #pf_original_name').on('input paste keyup', function(e) {
			var txt = $(this).val().toLowerCase();
			$(this).val(txt.replace(/^(.)|\s(.)|-(.)/g, function($1) {return $1.toUpperCase();}));
		});
	}
	<!-- ENDIF -->
или можно более оптимальные условия подобрать?
Аватара пользователя
Alecto
phpBB 3.0.12
Сообщения: 2857
Стаж: 15 лет 4 месяца
Откуда: Украина! Харьков
Благодарил (а): 68 раз
Поблагодарили: 240 раз

Re: Регистрация пользователей: регистр полей "как в предложе

Сообщение Alecto »

на тесте сделал привязку из адреса к акйди раздела ПРОФИЛЬ в личном кабинете i=164
перенес на основу, а там профиль i=873
база конвертировалась одна и та же, но с разницей в 3 месяца, поидее 3012 я не модифицировал и блоки личных разделов не должны были изменять свои айди.
скажите, отчего зависят ID разделов в личном кабинете?
насколько надежным будет использование ID в моем частном случае в рамках одного сайта? не "съедут" ли айдишники при обновлении?

Вернуться в «Поддержка phpBB 3.1.x»