@IgorRastarov

Почему удаляются обработчики событий после отправки формы?

Всем привет. Такой вопрос у меня есть обычная форма обратной связи на битриксе main.feedback - реализована в popUp окне.
<?$APPLICATION->IncludeComponent("youx:main.feedback", "marki_betona", Array(
		"EVENT_MESSAGE_ID" => array(	// Почтовые шаблоны для отправки письма
			0 => "9",
		),
		"OK_TEXT" => "Спасибо, ваше сообщение принято.",	// Сообщение, выводимое пользователю после отправки
		"REQUIRED_FIELDS" => array(	// Обязательные поля для заполнения
			0 => "NAME",
			1 => "PHONE",
		),
	false
);?>


template.php
<div class="popup js-popup <?=(!empty($arResult["OK_MESSAGE"]))?'is-active':''?>" data-popup="feedback">
	<div class="popup__body js-popup-body">
		<button type="button" class="popup__close js-close-popup"><i class="fa fa-times" aria-hidden="true"></i></button>	
<?if(!empty($arResult["ERROR_MESSAGE"]))
{
	foreach($arResult["ERROR_MESSAGE"] as $v)
		ShowError($v);
}
if(strlen($arResult["OK_MESSAGE"]) > 0)
{
	?><div class="mf-ok-text"><?=$arResult["OK_MESSAGE"]?></div>
<?
}
?>
<div class="popup__title">Заказать звонок</div>
		<form action="<?=POST_FORM_ACTION_URI?>" method="POST">
		<?=bitrix_sessid_post()?>
			<div class="popup__section">
				<input type="text" name="user_name" value="<?=$arResult["AUTHOR_NAME"]?>" class="popup__input" placeholder="Имя *" required>
			</div>
				
			<div class="popup__section">
				<input type="text" name="user_phone" value="<?=$arResult["AUTHOR_PHONE"]?>" class="popup__input js-input-phone" placeholder="Телефон *" required>
			</div>
			
			<div class="popup__section">
				<input type="submit" name="submit" class="btn btn--normal" value="Отправить">
			</div>
		</form>
</div>

Проблема в том, что когда сообщение отправлено - форма не закрывается - чтобы человек видел, что сообщение отправлено, но после отправки формы удаляются все обработчики событий - и та же кнопка закрытия формы - крестик
$('.js-popup').find('form').on('submit', function(e) {
	$('.js-close-popup').on('click', function(e) {
		$('.js-popup').removeClass('is-active');
	});
});

Она не срабатывает. Посоветуйте, что сделать.
  • Вопрос задан
  • 198 просмотров
Пригласить эксперта
Ответы на вопрос 1
Всплывающее окно изначально создается на странице через php или после каких-то событий, через JS? Если второй случай, то, как я помню к объектам нельзя будет обратиться напрямую по классам, можно использовать что-то вроде $('body').on('click', '.js-ppopup', function(){})...
Ответ написан
Ваш ответ на вопрос

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

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