# Передача данных из формы на другую страницу

Чтобы данные передавать с одной страницы (Страница 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

Далее, код, который восстанавливает сохраненные поля.

Чтобы он сработал, нужно:

  1. В настройках формы добавить класс import-from-storage.
  2. В настройках полей добавить соответствующие форме на Странице 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.