Страница регистрации Ajax Bitrix
Шаблон компонента находится по адресу components/bitrix/main.register/.default/template.php. Добавил jquery обработчик формы, который проверял поля и блокировал отправку формы. Однако после сохранения файла страница регистрации начала вести себя непредсказуемо: сначала скрипты шаблона начали выводиться в формате текста, затем после того, как я вернул изначальный код, текст перестал попадать в поля. Как с этим работать и что можно сделать?
<div id="reg-area">
<div class="modal-content uk-text-center">
<div class="bx-auth col-md-12">
#PHP0001#
<div class="bx-auth-reg">
<div class="bitrix-main-register">
<p style="font-size: 24px;"> #PHP0002# </p>
#PHP0003#
<p>#PHP0004#</p>
#PHP0005#
#PHP0006#
<p>#PHP0007#</p>
#PHP0008#
#PHP0009#
<form method="post" action="#PHP0010#" name="regform" autocomplete="off">
#PHP0011#
<input type="hidden" name="backurl" value="#PHP0012#" />
#PHP0013#
<input type="hidden" name="SIGNED_DATA" value="#PHP0014#" />
<table>
<tbody>
<tr>
<td>#PHP0015#<span class="starrequired">*</span></td>
<td><input size="30" type="text" name="SMS_CODE" value="#PHP0016#" autocomplete="off" /></td>
</tr>
</tbody>
<tfoot>
<tr>
<td></td>
<td><input type="submit" name="code_submit_button" value="#PHP0017#" /></td>
</tr>
</tfoot>
</table>
</form>
<script>
new BX.PhoneAuth({
containerId: 'bx_register_resend',
errorContainerId: 'bx_register_error',
interval: #PHP0018#,
data: #PHP0019#,
onError:
function(response)
{
var errorDiv = BX('bx_register_error');
var errorNode = BX.findChildByClassName(errorDiv, 'errortext');
errorNode.innerHTML = '';
for(var i = 0; i < response.errors.length; i++)
{
errorNode.innerHTML = errorNode.innerHTML + BX.util.htmlspecialchars(response.errors[i].message) + '<br>';
}
errorDiv.style.display = '';
}
});
</script>
<div id="bx_register_error" style="display:none">#PHP0020#</div>
<div id="bx_register_resend"></div>
#PHP0021#
#PHP0022#
<form method="post" action="#PHP0023#" name="regform" enctype="multipart/form-data" autocomplete="off">
#PHP0024#
<input type="hidden" name="backurl" value="#PHP0025#" />
<input type="hidden" name="TYPE" value="REGISTRATION"/>
#PHP0026#
<table>
<thead>
<tr>
<td colspan="2"></td>
</tr>
</thead>
<tbody>
#PHP0027#
<input type="hidden" name="TYPE" value="REGISTRATION"/>
<span class="Radiofield" id="main_UF_PRIVCOMP"><input type="radio" id="radio-1" value="1" name="UF_PRIVCOMP" checked><label for="radio-1">Частное лицо</label></span>
<span class="Radiofield"><input type="radio" id="radio-2" value="0" name="UF_PRIVCOMP"><label for="radio-2">Компания</label></span>
#PHP0028#
#PHP0029#
<tr>
<td>#PHP0030##PHP0031#<span class="starrequired">*</span>#PHP0032#</td>
<td>
<select name="REGISTER[AUTO_TIME_ZONE]" oncha nge="this.form.elements['REGISTER[TIME_ZONE]'].disabled=(this.value != 'N')">
<option value="">#PHP0033#</option>
<option value="Y"#PHP0034#>#PHP0035#</option>
<option value="N"#PHP0036#>#PHP0037#</option>
</select>
</td>
</tr>
<tr>
<td>#PHP0038#</td>
<td>
<select name="REGISTER[TIME_ZONE]"#PHP0039#>
#PHP0040#
<option value="#PHP0041#"#PHP0042#>#PHP0043#</option>
#PHP0044#
</select>
</td>
</tr>
#PHP0045#
<tr>
<p>#PHP0046#:#PHP0047#<span class="starrequired">*</span>#PHP0048#</p>
<div>
#PHP0049#<input size="30" type="password" name="REGISTER[#PHP0050#]" value="#PHP0051#" autocomplete="off" class="bx-auth-input" />
#PHP0052#
<span class="bx-auth-secure" id="bx_auth_secure" title="#PHP0053#" style="display:none">
<div class="bx-auth-secure-icon"></div>
</span>
<noscript>
<span class="bx-auth-secure" title="#PHP0054#">
<div class="bx-auth-secure-icon bx-auth-secure-unlock"></div>
</span>
</noscript>
<sc ript type="text/javascript">
document.getElementById('bx_auth_secure').style.display = 'inline-block';
</sc ript>
#PHP0055#
#PHP0056#<input size="30" type="password" name="REGISTER[#PHP0057#]" value="#PHP0058#" autocomplete="off" />#PHP0059#<select name="REGISTER[#PHP0060#]">
<option value="">#PHP0061#</option>
<option value="M"#PHP0062#>#PHP0063#</option>
<option value="F"#PHP0064#>#PHP0065#</option>
</select>#PHP0066#<select name="REGISTER[#PHP0067#]">#PHP0068#<option value="#PHP0069#"#PHP0070# selected="selected"#PHP0071#>#PHP0072#</option>
#PHP0073#</select>#PHP0074#<input size="30" type="file" name="REGISTER_FILES_#PHP0075#" />#PHP0076#<textarea cols="30" rows="5" name="REGISTER[#PHP0077#]">#PHP0078#</textarea>#PHP0079#<small>#PHP0080#</small><br />#PHP0081#
#PHP0082#
<input size="30" type="text" name="REGISTER[#PHP0083#]" value="#PHP0084#" />
#PHP0085#
#PHP0086##PHP0087#</td>
</tr>
#PHP0088#
#PHP0089#
#PHP0090#
#PHP0091#
<tr><td colspan="2">#PHP0092#</td></tr>
#PHP0093#
<tr><td>#PHP0094#:#PHP0095#<span class="starrequired">*</span>#PHP0096#</td><td>
<?$APPLICATION->IncludeComponent(
"bitrix:system.field.edit",
"={\$arUserField[\"USER_TYPE\"][\"USER_TYPE_ID\"]}",
array(
"bVarsFromForm" => "",
"arUserField" => "",
"form_name" => "regform"
),
"null",
array("HIDE_ICONS" => "Y")
);?></td></tr>
#PHP0097#
#PHP0098#
#PHP0099#
#PHP0100#
<tr>
<td colspan="2"><b>#PHP0101#</b></td>
</tr>
<tr>
<td></td>
<td>
<input type="hidden" name="captcha_sid" value="#PHP0102#" />
<img src="/bitrix/tools/captcha.php?captcha_sid=#PHP0103#" width="180" height="40" alt="CAPTCHA" />
</td>
</tr>
<tr>
<td>#PHP0104#:<span class="starrequired">*</span></td>
<td><input type="text" name="captcha_word" maxlength="50" value="" autocomplete="off" /></td>
</tr>
#PHP0105#
</tbody>
<tfoot>
<tr>
<td><input type="hidden" name="REGISTER[PERSONAL_PHONE]" value="89310000000"></td>
<td><input type="submit" name="register_submit_button" class="btn btn-green btn-submit" value="#PHP0106#" /></td>
</tr>
</tfoot>
</div>
</div>
</div>
</table>
</form>
<div style="margin-top: 16px">
<p><a href="#PHP0107#index.php"><b>#PHP0108#</b></a></p>
</div>
<p>#PHP0109#</p>
#PHP0110#
<p><span class="starrequired">*</span>#PHP0111#</p>
#PHP0112#
</div>
</div>
</div>
</div>
</div>
<script>
// Заполнение поля Логин временным значением
document.querySelector("input[name='REGISTER[LOGIN]']").value = "temp_login!";
// Подставляем placeholder'ы в input'ы
document.querySelector('[name="REGISTER[EMAIL]"]').placeholder = 'Введите ваш e-mail';
document.querySelector('[name="REGISTER[PHONE_NUMBER]"]').placeholder = 'Номер мобильного (на него придёт СМС)';
document.querySelector('[name="REGISTER[PASSWORD]"]').placeholder = 'Придумайте пароль от 6 символов с цифрами и буквами разного регистра';
document.querySelector('[name="REGISTER[CONFIRM_PASSWORD]"]').placeholder = 'Продублируйте пароль';
document.querySelector('[name="REGISTER[NAME]"]').placeholder = 'Ваше настоящее Имя';
</script>
<script type="text/javascript">
$(document).on('ready', function(){
$('#login-area form').submit(function(){
var $this = $(this);
var $form = {
action: $this.attr('action'),
post: {'ajax_key':''}
};
$.each($('input', $this), function(){
if ($(this).attr('name').length) {
$form.post[$(this).attr('name')] = $(this).val();
}
});
$.post($form.action, $form.post, function(data){
$('input', $this).removeAttr('disabled');
if (data.type == 'error') {
alert(data.message);
} else {
window.location = window.location;
}
}, 'json');
return false;
});
})
</script>