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

Материал из Umicms
Перейти к:навигация, поиск
 
(не показаны 3 промежуточные версии 1 участника)
Строка 3: Строка 3:
 
Чтобы введенные ранее значения полей оставались после перезагрузки страницы, предлагаем следующее решение для макроса '''%webforms add()%'''
 
Чтобы введенные ранее значения полей оставались после перезагрузки страницы, предлагаем следующее решение для макроса '''%webforms add()%'''
  
Правим шаблон '''tpls/data/reflection/webforms.tpl'''
+
Правим шаблон по которому у вас выводится форма. <!-- '''tpls/data/reflection/webforms.tpl''' -->
  
В блоке '''form_block''' необходимо добавить в тег '''<form>''' параметры '''id="webform"''' и '''onsubmit="saveFormData(this); return true;"'''.
+
<!-- В блоке '''form_block''' --> Необходимо добавить в тег '''<form>''' параметры '''id="webform"''' и '''onsubmit="saveFormData(this); return true;"'''.
 
Ниже тега '''</form>''' добавим следующий скрипт:
 
Ниже тега '''</form>''' добавим следующий скрипт:
  
Строка 16: Строка 16:
 
Если в шаблон ранее не вносилось поправок, блок будет выглядеть следующим образом:
 
Если в шаблон ранее не вносилось поправок, блок будет выглядеть следующим образом:
  
<pre>
+
<source lang="html4strict">
 
$FORMS['form_block'] = <<<END
 
$FORMS['form_block'] = <<<END
 
<form enctype="multipart/form-data" method="post" action="/webforms/send/" id="webform" onsubmit="saveFormData(this); return true;">
 
<form enctype="multipart/form-data" method="post" action="/webforms/send/" id="webform" onsubmit="saveFormData(this); return true;">
Строка 28: Строка 28:
 
</script>
 
</script>
 
END;
 
END;
</pre>
+
</source>
  
 
Теперь при возникновении ошибок при отправке сообщения значения полей будут сохраняться.
 
Теперь при возникновении ошибок при отправке сообщения значения полей будут сохраняться.
  
  
Добавленные функции находятся в файле '''js/guest.js''', по-этому, что бы функционал работал, в шаблоне страницы этот скрипт должен вызываться. Вызов этого скрипта осуществляет макрос '''%system includeQuickEditJs()%'''
+
Добавленные функции находятся в файле '''js/guest.js''', по-этому, что бы функционал работал, в шаблоне страницы этот скрипт должен вызываться. Вызов этого скрипта осуществляет макрос '''%system includeQuickEditJs()%'''. Имейте в виду, что по умолчанию файл '''js/guest.js''' подключается только для пользователя-гостя. Если Вы хотите, чтобы функции были доступны для всех типов пользователей, можно создать новый файл с функциями '''saveFormData''' и '''restoreFormData''' и подключать его вручную.
 +
 
 
[[Категория:Модуль Обратная связь]]
 
[[Категория:Модуль Обратная связь]]

Текущая версия на 07:53, 27 января 2016

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

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

Правим шаблон по которому у вас выводится форма.

Необходимо добавить в тег <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()%. Имейте в виду, что по умолчанию файл js/guest.js подключается только для пользователя-гостя. Если Вы хотите, чтобы функции были доступны для всех типов пользователей, можно создать новый файл с функциями saveFormData и restoreFormData и подключать его вручную.