Обратная связь: Сохранение значений полей при возникновении ошибок отправки — различия между версиями
Arnica (обсуждение | вклад) |
Alexei (обсуждение | вклад) |
||
(не показаны 4 промежуточные версии 2 участников) | |||
Строка 3: | Строка 3: | ||
Чтобы введенные ранее значения полей оставались после перезагрузки страницы, предлагаем следующее решение для макроса '''%webforms add()%''' | Чтобы введенные ранее значения полей оставались после перезагрузки страницы, предлагаем следующее решение для макроса '''%webforms add()%''' | ||
− | Правим шаблон '''tpls/data/reflection/webforms.tpl''' | + | Правим шаблон по которому у вас выводится форма. <!-- '''tpls/data/reflection/webforms.tpl''' --> |
− | В блоке '''form_block''' | + | <!-- В блоке '''form_block''' --> Необходимо добавить в тег '''<form>''' параметры '''id="webform"''' и '''onsubmit="saveFormData(this); return true;"'''. |
Ниже тега '''</form>''' добавим следующий скрипт: | Ниже тега '''</form>''' добавим следующий скрипт: | ||
Строка 16: | Строка 16: | ||
Если в шаблон ранее не вносилось поправок, блок будет выглядеть следующим образом: | Если в шаблон ранее не вносилось поправок, блок будет выглядеть следующим образом: | ||
− | < | + | <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; | ||
− | </ | + | </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 и подключать его вручную.