Динамическая подстановка значений в форму
Рады сообщить, что мы добавили функционал, который позволяет устанавливать динамические значения в форму, при размещении ее у себя на сайте.
Для чего это необходимо?
В первую очередь это будет полезно для сайтов, которые используют одну форму на разных страницах своего сайта, например, для быстрого заказа товара, в карточке товара установлена форма и чтобы клиенту было легче заполнять форму, можно автоматом подставлять определенные значения в форму, а также можно изменять название самой формы.
Как использовать у себя на сайте?
Для этого используйте javascript-код, для вставки формы к себе на сайт.
В личном кабинете в разделе "Получить код" он будет выглядеть примерно так:
<div id="form_{ID}_1"></div> <script type="text/javascript"> (function (d, w, c) { (w[c] = w[c] || []).push({formId:{ID},host:"formdesigner.ru",formHeight:{HEIGHT}, el: "form_{ID}_1", center: 1}); var s = d.createElement("script"), g = "getElementsByTagName"; s.type = "text/javascript"; s.charset="UTF-8"; s.async = false; s.src = (d.location.protocol == "https:" ? "https:" : "http:")+"//formdesigner.ru/js/iform.js"; var h=d[g]("head")[0] || d[g]("body")[0]; h.appendChild(s); })(document, window, "fdforms"); </script>
где вместо {ID} - будет стоять ID формы, а вместо {HEIGHT} - высота формы.
Для того, чтобы установить значение в форму, необходимо заменить строку:
(w[c] = w[c] || []).push({formId:{ID},host:"formdesigner.ru",formHeight:{HEIGHT}, el: "form_{ID}_1", center: 1});
на:
(w[c] = w[c] || []).push({ formId:{ID}, host:"formdesigner.ru", formHeight:{HEIGHT}, el: "form_{ID}_1", center: 1, fields: { {FIELD}: '{VALUE}' } });
где:
- {FIELD} - название макроса нужного поля без фигурных скобок
- {VALUE} - значение, которое необходимо установить
Для того, чтобы узнать {FIELD} элемента необходимо перейдите в настройки нужного вам элемента в раздел "Расширенные параметры":
Здесь в поле "Название макроса" вы можете переопределить системное значение и указать свое. Именно это значение и нужно использовать в качестве {FIELD} элемента.
<div id="form_{ID}_1"></div> <script type="text/javascript"> (function (d, w, c) { (w[c] = w[c] || []).push({ formId: {ID}, host: "formdesigner.ru", formHeight: {HEIGHT}, el: "form_{ID}_1", center: 1, fields: { field2421858: 'Новое значение' } }); var s = d.createElement("script"), g = "getElementsByTagName"; s.type = "text/javascript"; s.charset="UTF-8"; s.async = false; s.src = (d.location.protocol == "https:" ? "https:" : "http:")+"//formdesigner.ru/js/iform.js"; var h=d[g]("head")[0] || d[g]("body")[0]; h.appendChild(s); })(document, window, "fdforms"); </script>
Кроме этого, еще можно изменять название формы, для этого необходимо добавить следующий параметр:
(w[c] = w[c] || []).push({ formId: {ID}, host: "formdesigner.ru", formHeight: {HEIGHT}, el: "form_{ID}_1", center: 1, title: '{TITLE}', fields: { {FIELD}: '{VALUE}' } });
где вместо {TITLE} - задается нужное название формы.
Точно также можно устанавливать значения в форму, при использовании всплывающего окна. Допустим код вызова нашего окна выглядет так:
<script type="text/javascript" src="http://formdesigner.ru/js/widgets/popup.js"></script> <a target="_blank" onclick="FDPopup.open({ID}, {'hideCloseBtn':false,'host':'formdesigner.ru','overlay':{'background':'#000000','opacity':0.1}}); return false;" href="http://formdesigner.ru/form/view/{ID}">Обратная связь</a>
Для того, чтобы установить значение в форму, нужно использовать вот такой код:
<script type="text/javascript" src="http://formdesigner.ru/js/widgets/popup.js"></script> <a target="_blank" onclick="FDPopup.open({ID}, { hideCloseBtn: false, host: 'formdesigner.ru', overlay: {'background':'#000000','opacity':0.1}, fields: { {FIELD}: '{VALUE}' } }); return false;" href="http://formdesigner.ru/form/view/<strong>{ID}</strong>">Обратная связь</a>
Т.е. мы в код вызова функции FDPopup.open добавили новый параметр fields, в котором передаем для каких элементов установить нужные значения.
Если же вам необходимо передать в форму данные после ее загрузки, то необходимо использовать следующую функцию:
window.FDSetData('form_{ID}_1', { title: '{TITLE}', fields: { {FIELD}:'{VALUE}' } });
Передача данных в форму из URL
Очень часто возникает необходимость передавать в форму данные из URL. Например, Вы делаете email рассылку и вам нужно передавать имя подписчика и его email на страницу вашего сайта, где размещена наша форма.
Для этого в URL страницы вашего сайта добавляются дополнительные GET параметры. Если адрес страницы вашего сайта выглядит так:
https://mytestsite.ru/page.html
То для того, чтобы передать на эту страницу имя и email, необходимо сформировать вот такой URL:
https://mytestsite.ru/page.html?name=Имя&email=test@testuser.ru
Т.е. GET параметры добавляются в URL через знак вопроса ? и разделяются знаком &.
Так вот, как передать значение GET параметра из URL в форму, которая размещена на этой странице?
Для этого необходимо считать эти параметры используя Javascript. Это можно сделать так:
var url = new URL(document.location.href); var name = url.searchParams.get('name'); // имя подписчика var email = url.searchParams.get('email'); // email подписчика
Теперь остается передать полученные значения в форму так, как мы рассказывали выше. Итоговый код формы будет выглядеть вот так:
<div id="form_{ID}_1"></div> <script type="text/javascript"> (function (d, w, c) { var url = new URL(document.location.href); (w[c] = w[c] || []).push({ formId:{ID}, host:"formdesigner.ru", formHeight:{HEIGHT}, el: "form_{ID}_1", center: 1, fields: { name: url.searchParams.get('name'), email: url.searchParams.get('email') } }); var s = d.createElement("script"), g = "getElementsByTagName"; s.type = "text/javascript"; s.charset="UTF-8"; s.async = false; s.src = (d.location.protocol == "https:" ? "https:" : "http:")+"//formdesigner.ru/js/iform.js"; var h=d[g]("head")[0] || d[g]("body")[0]; h.appendChild(s); })(document, window, "fdforms"); </script>
Таким же образом передаются данные и во всплывающее окно с формой.
Если у Вас будут какие-либо сложности, то задавайте свои вопросы нам через форму обратной связи.