Передача данных из формы на другую страницу
Чтобы данные передавать с одной страницы (Страница 1) на другую (Страница 2), нужно их сохранять в LocalStorage.
Рабочий пример можно посмотреть по ссылке.
Страница 1
Следующий код сохраняет те поля, у которых в настройках есть класс, начинающийся с export-
(export-result
, export-name
и т.д.).
<script>
cr.api(function (page) {
// Шаблон класса, которым помечаются сохраняемые поля
var exportRegExp = /^export-[\w\W-_0-9]+$/;
// Отслеживаем отправку всех форм
page.on('form-submit', function (event) {
event.form.fields.forEach(function (field) {
// Проверяем, соответствует ли хоть один класс поля шаблону
field.el.classList.forEach(function (className) {
// Если соответствует, то...
if (exportRegExp.test(className)) {
// ... сохраняем значение поля в LocalStorage
localStorage.setItem(className, JSON.stringify(field.value));
}
});
});
});
});
</script>
Страница 2
Далее, код, который восстанавливает сохраненные поля.
Чтобы он сработал, нужно:
- В настройках формы добавить класс
import-from-storage
. - В настройках полей добавить соответствующие форме на Странице 1 классы (
export-result
,export-name
и т.д.).
<script>
cr.api(function (page) {
// Шаблон класса, которым помечаются сохраняемые поля
var exportRegExp = /^export-[\w\W-_0-9]+$/;
// Восстанавливаем поля только в формах с классом
page.lazy('.import-from-storage', function (el) {
page.getComponent(el).fields.forEach(function (field) {
// Проверяем, соответствует ли хоть один класс поля шаблону
field.el.classList.forEach(function (className) {
// Если соответствует, то...
if (exportRegExp.test(className)) {
// ... достаем сохраненное значение поля
var value = JSON.parse(localStorage.getItem(className));
// И записываем его в поля
if (value !== null) field.setValue(value);
}
});
});
});
});
</script>
Страница 3, 4...
Можно делать и более сложные связки. Например, на страницу 2 так же добавить код для Страницы 1, а на Страницу 3 добавить код для Страницы 2.
Тогда поля сначала будут передаваться со Страницы 1 на Страницу 2, затем со Страницы 2 на Страницу 3.