XF 2.2 Имя пользователя из двух input

Статус
В этой теме нельзя размещать новые ответы.
Версия XenForo
2.2

MrOne

Проверенные
Сообщения
438
Решения
2
Реакции
153
Баллы
355
Копаюсь уже час в register_macros но не понимаю как заменить чтобы логин был из Имени Фамилии при регистрации
HTML:
Имя: <input id="input1" name="input1"/><br />
Фамилия: <input id="input2" name="input2"/><br />
Вал логин будет: <input id="input3" name="input3" style="color:#ff0008;font-weight:bold;outline:none;border:none;" readonly />

<script>
input1.addEventListener('keyup', joinValues, false);
input2.addEventListener('keyup', joinValues, false);
function joinValues(){
    input3.value = input1.value + ' ' + input2.value;
}
</script>

код из register_macros
PHP:
<xf:macro name="username_row"
    arg-fieldName="username"
    arg-value=""
    arg-autoFocus="{{ true }}">


    <xf:textboxrow name="{$fieldName}" value="{$value}" autocomplete="username" required="required"
        autofocus="{{ $autoFocus ? 'autofocus' : false }}"
        maxlength="{{ $xf.options.usernameLength.max ?: max_length($xf.visitor, 'username') }}"
        label="{{ phrase('user_name') }}"
        hint="{{ phrase('required') }}"
        explain="{{ phrase('this_is_name_that_will_be_shown_with_your_messages') }}"
        validation-url="{{ link('misc/validate-username') }}" />
</xf:macro>
 
Решение
Перед <xf:textboxrow name="{$fieldName}" напиши <input type="hidden" id="usernameInputName" value="{$fieldName}" />

Потом в js пиши
Код:
var usernameInputName = $('#usernameInputName').val();
$('input[name='+ usernameInputName  +']').val(input1.value + ' ' + input2.value);

Могут быть синтаксические ошибки, я дал наброски. Используй jquery.
А где в коде объявление переменных input1, input2, input3?

Вероятно, в начале скрипта надо объявить переменные.
JavaScript:
var input1 = document.getElementById('input1');
var input2 = document.getElementById('input2');
var input3 = document.getElementById('input3');
 
Последнее редактирование:
Это все понятно, но где достать эту строку которая является вводом логина при регистрации?
Не понимаю как register_macros эту строку создает!?
HTML:
<input type="text" class="input" data-xf-init="input-validator" data-validation-url="/misc/validate-username" name="88fb7b7dcd1d40c53f488a12a1be27f23e7b223a" autocomplete="username" required="required" autofocus="autofocus" maxlength="25" id="_xfUid-3-1603979092" />
 
Перед <xf:textboxrow name="{$fieldName}" напиши <input type="hidden" id="usernameInputName" value="{$fieldName}" />

Потом в js пиши
Код:
var usernameInputName = $('#usernameInputName').val();
$('input[name='+ usernameInputName  +']').val(input1.value + ' ' + input2.value);

Могут быть синтаксические ошибки, я дал наброски. Используй jquery.
 
grisha2217, спасибо!
Все сделал и получилось!

1603981657298.png

Перед <xf:textboxrow name="{$fieldName}" вставил -
HTML:
<script>
input1.addEventListener('keyup', joinValues, false);
input2.addEventListener('keyup', joinValues, false);
function joinValues(){
var usernameInputName = $('#usernameInputName').val();
$('input[name='+ usernameInputName  +']').val(input1.value + ' ' + input2.value);
}
</script>
<input type="hidden" id="usernameInputName" value="{$fieldName}" />

<dl class="formRow formRow--input">
                <dt>
                    <div class="formRow-labelWrapper">
                    <label class="formRow-label">Имя</label>
                    <dfn class="formRow-hint">Обязательно</dfn></div>
                </dt>
                <dd>
<input type="text" class="input" id="input1" name="input1"/> 
                </dd>
            </dl>
  
<dl class="formRow formRow--input">
                <dt>
                    <div class="formRow-labelWrapper">
                    <label class="formRow-label">Фамилия</label>
                    <dfn class="formRow-hint">Обязательно</dfn></div>
                </dt>
                <dd>
                    <input type="text" class="input" id="input2" name="input2"/>
                    <div class="formRow-explain">Можно указать первую букву фамилии С ТОЧКОЙ</div>
                </dd>
            </dl>

а также добавил чтобы логин не могли изменить.
После <xf:textboxrow name="{$fieldName}" добавил readonly="readonly".

P.S. До этого возле логина была информация что Имя Фамилия или с точкой, но половина народа не читает...
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу