Задать вопрос
@AndTheEnd

Как сделать две формы на одной странице на AJAX на Битрикс?

Всем привет - у меня на одной странице 2 формы
<div class="reg-tab__tab js-tab-block is-active" data-tab="1" id="div_1_reg">
	<?
	$APPLICATION->IncludeComponent("bitrix:main.register", "temp1", Array(
			"AUTH" => "N",
			"REQUIRED_FIELDS" => array(
				0 => "PERSONAL_PHONE",
				1 => "NAME",
			),
			"SET_TITLE" => "Y",
			"SHOW_FIELDS" => array(
				0 => "NAME",
				1 => "PERSONAL_PHONE",
				2 => "EMAIL",
			),
			"SUCCESS_PAGE" => "/reg/",
			"USER_PROPERTY" => "",
			"USER_PROPERTY_NAME" => "",
			"USE_BACKURL" => "Y",
			"COMPONENT_TEMPLATE" => "temp1",
			"AJAX_MODE" => "Y",
			"AJAX_OPTION_STYLE" => "N",
			"AJAX_OPTION_JUMP" => "N",

		),
		false
	);?>
</div>

<div class="reg-tab__tab js-tab-block" data-tab="2" id="div_2_reg">
	<?
	$APPLICATION->IncludeComponent(
		"bitrix:main.register", 
		"temp2", 
		array(
			"AUTH" => "N",
			"REQUIRED_FIELDS" => array(
				0 => "PERSONAL_PHONE",
				1 => "NAME",
			),
			"SET_TITLE" => "Y",
			"SHOW_FIELDS" => array(
				0 => "NAME",
				1 => "EMAIL",
				2 => "PERSONAL_PHONE",
				3 => "WORK_COMPANY",
			),
			"SUCCESS_PAGE" => "/reg/",
			"USER_PROPERTY" => array(
				0 => "",
				1 => "",
			),
			"USER_PROPERTY_NAME" => "",
			"USE_BACKURL" => "Y",
			"COMPONENT_TEMPLATE" => "temp2",
			"AJAX_MODE" => "Y",
			"AJAX_OPTION_STYLE" => "N",
			"AJAX_OPTION_JUMP" => "N",

		),
		false
	);?>
</div>

Соответственно я включил у них AJAX_MODE = "Y"

И в итоге, при отправки первой формы с шаблоном temp1 - все работает корректно
А в форме с шаблоном temp2 - в саму форму, после успешной отправки - подгружается весь HTML DOM - страницы.
Я не могу понять в чем проблем. У форм разные name и id.

Да, кнопка submit одинаковая (по атрибуту name и по классу) - но я пробовал менять ее (атрибут и класс)- проблема осталась.
При дебаге я обнаружил, что после отправки первой формы - атрибут action у формы такой:
/reg/?bxajaxid... ну и параметры.
При отправке же второй формы
Get - запрос ajax не подставляется в action. В action лежит вся моя страница /reg/ без GET - запроса AJAX.

Как с этим бороться, подскажите, пожалуйста.

P.S. Если форма на странице одна - то все работает корректно.
  • Вопрос задан
  • 1382 просмотра
Подписаться 1 Средний Комментировать
Решения вопроса 1
@jasper-blondin
Я не могу понять в чем проблем

Проблема в том, что Вы используете Битрикс ))

По существу.
Битрикс не умеет корректно отображать на одной странице две одинаковые формы, если они работают в режиме AJAX. Иногда могут проявляться "глюки", как в Вашем случае.
Я передал эту проблему в отдел разработки Битрикс еще в 2016-м году. Видимо, они так и не решили проблему.
По их же словам, временного решения данной проблемы нет.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
alex-1917
@alex-1917
Если ответ помог, отметь решением
У вас не две формы.
У вас два вызова одного и того же компонента.
Вам надо один раз вызывать компонент и отображать сколько угодно форм!
На форуме Битрикс разжевано давно и в нескольких вариантах, потратьте время,зарегистрируйтесь как разработчик и ищите в клиентском разделе форума!
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы