Обратная связь: Сохранение значений полей при возникновении ошибок отправки

Материал из Umicms
Перейти к:навигация, поиск

Проблема: при отправке сообщения из формы обратной связи с некорректно заполненными полями после сообщения об ошибке значения полей исчезают.

Чтобы введенные ранее значения полей оставались после перезагрузки страницы, предлагаем следующее решение для макроса %webforms add()%

Правим шаблон tpls/data/reflection/webforms.tpl

В блоке form_block необходимо добавить в тег <form> параметры id="webform" и onsubmit="saveFormData(this); return true;". Ниже тега </form> добавим следующий скрипт:

<script type="text/javascript">
	restoreFormData(document.getElementById('webform'));
</script>

Если в шаблон ранее не вносилось поправок, блок будет выглядеть следующим образом:

$FORMS['form_block'] = <<<END
<form enctype="multipart/form-data" method="post" action="/webforms/send/" id="webform" onsubmit="saveFormData(this); return true;">
	<input type="hidden" name="system_form_id" value="%form_id%" />
	<input type="hidden" name="system_template" value="%template%" />
	%address_select%
	%groups%
</form>
<script type="text/javascript">
	restoreFormData(document.getElementById('webform'));
</script>
END;

Теперь при возникновении ошибок при отправке сообщения значения полей будут сохраняться.


Добавленные функции находятся в файле js/guest.js, по-этому, что бы функционал работал, в шаблоне страницы этот скрипт должен вызываться. Вызов этого скрипта осуществляет макрос %system includeQuickEditJs()%