Как оставаться в том же мастере при обновлении страницы в Jquery-Steps?

Я использую плагин jQuery-Steps для моей формы типа мастера. Теперь я хочу оставаться в том же мастере, когда обновляю страницу. Как я могу это сделать?


person Half Blood Prince    schedule 28.12.2015    source источник


Ответы (1)


Вы должны установить saveState: true в опциях при инициализации jQuery.steps.

eg:

$("#example-basic").steps({
    headerTag: "h3",
    bodyTag: "section",
    transitionEffect: "slideLeft",
    autoFocus: true,
    saveState: true
});

Параметр saveState зависит от плагина jQuery.cookie. Ссылка: https://github.com/rstaib/jquery-steps/issues/86

Также важно отметить, что saveState не будет работать в локальной файловой системе, его необходимо обслуживать с веб-сервера из-за ограничений браузера.


Сброс состояния:

Чтобы сбросить состояние после завершения работы мастера, вы должны использовать jQuery, чтобы щелкнуть ссылку первого шага. Затем вы можете скрыть мастер и показать пользовательское сообщение, чтобы пользователь не запутался.

$("#example-basic").steps({
    ...
    onFinished: function( a ) {
        $('#example-basic .steps a:eq(0)').click();
        $('#example-basic').hide();
        $('#custom-message').show();
    }
});

Это единственный способ сбросить состояние без изменения или расширения кода плагина.

person forsvunnet    schedule 28.12.2015
comment
Это сработало, но состояние сохраняется даже после отправки формы. После отправки, когда я пытаюсь снова отредактировать форму, я сразу перехожу к последнему мастеру (шагу). Как очистить состояние при отправке формы? - person Half Blood Prince; 28.12.2015
comment
Я обновил ответ о том, как сбросить состояние. К сожалению, плагин шагов не предоставляет простой способ изменения информации о состоянии. - person forsvunnet; 28.12.2015
comment
Это работает, но после отправки формы первый мастер снова появляется на секунду, а затем переходит на домашнюю страницу (куда я перенаправляюсь после отправки формы). Это внесет путаницу. Нет ли другого способа сбросить состояние? - person Half Blood Prince; 29.12.2015
comment
Ключ файла cookie установлен в плагине, технически вы можете просто очистить файл cookie, жестко закодировав этот ключ, но он может сломаться при обновлении плагина. Используйте следующий код в своем собственном файле riks. Вы можете очистить куки в функции onFinished с помощью следующего кода: $.cookie('jQu3ry_5teps_St@te_' + $( this ).data( "uid" ), '' ); - person forsvunnet; 29.12.2015
comment
Да, это работает нормально! Почему вы сказали использовать следующий код на своих собственных риках? Возможны ли конфликты? (обновлять плагин не буду) - person Half Blood Prince; 29.12.2015
comment
Конфликтов не будет, пока вы не обновитесь. На свой страх и риск означает, что код не рассчитан на будущее и, скорее всего, сломается в какой-то момент после обновления. - person forsvunnet; 29.12.2015
comment
Вы имеете в виду, что это грязный взлом!! Я понимаю. - person Half Blood Prince; 29.12.2015
comment
Я назначаю несколько форм одному пользователю и установил saveState: true. Теперь Состояние одной формы отражается в другой форме. Например, если я нахожусь в мастере 4 в одной форме, он автоматически перенаправляет меня на мастер 4 и в других формах из-за файлов cookie. Есть ли способ сохранить состояние только для этой конкретной формы? - person Half Blood Prince; 30.12.2015
comment
Я применил класс «wizard-section» для каждого мастера. Но я не понимаю, при чем здесь печенье? Я имею в виду, что идентификатор/класс мастера будет одинаковым для разных форм, назначенных пользователю. Он будет использовать этот файл cookie jQu3ry_5teps_St%40te_wizard для каждой формы, и это вызывает проблему. - person Half Blood Prince; 30.12.2015
comment
Ключ cookie состоит из жестко закодированных ключей jQu3ry_5teps_St@te_ и wizard.data( "uid " ). Последняя часть является либо атрибутом id элемента мастера, либо автоматически увеличивающимся числом. github.com/rstaib/jquery-steps/blob/ master/src/privates.js#L321 Это означает, что если вы используете один и тот же атрибут id для всех мастеров, они получат один и тот же идентификатор файла cookie. - person forsvunnet; 30.12.2015