Я использую плагин jQuery-Steps для моей формы типа мастера. Теперь я хочу оставаться в том же мастере, когда обновляю страницу. Как я могу это сделать?
Как оставаться в том же мастере при обновлении страницы в Jquery-Steps?
Ответы (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
Это сработало, но состояние сохраняется даже после отправки формы. После отправки, когда я пытаюсь снова отредактировать форму, я сразу перехожу к последнему мастеру (шагу). Как очистить состояние при отправке формы?
- person Half Blood Prince; 28.12.2015
Я обновил ответ о том, как сбросить состояние. К сожалению, плагин шагов не предоставляет простой способ изменения информации о состоянии.
- person forsvunnet; 28.12.2015
Это работает, но после отправки формы первый мастер снова появляется на секунду, а затем переходит на домашнюю страницу (куда я перенаправляюсь после отправки формы). Это внесет путаницу. Нет ли другого способа сбросить состояние?
- person Half Blood Prince; 29.12.2015
Ключ файла cookie установлен в плагине, технически вы можете просто очистить файл cookie, жестко закодировав этот ключ, но он может сломаться при обновлении плагина. Используйте следующий код в своем собственном файле riks. Вы можете очистить куки в функции onFinished с помощью следующего кода:
$.cookie('jQu3ry_5teps_St@te_' + $( this ).data( "uid" ), '' );
- person forsvunnet; 29.12.2015
Да, это работает нормально! Почему вы сказали использовать следующий код на своих собственных риках? Возможны ли конфликты? (обновлять плагин не буду)
- person Half Blood Prince; 29.12.2015
Конфликтов не будет, пока вы не обновитесь. На свой страх и риск означает, что код не рассчитан на будущее и, скорее всего, сломается в какой-то момент после обновления.
- person forsvunnet; 29.12.2015
Вы имеете в виду, что это грязный взлом!! Я понимаю.
- person Half Blood Prince; 29.12.2015
Я назначаю несколько форм одному пользователю и установил saveState: true. Теперь Состояние одной формы отражается в другой форме. Например, если я нахожусь в мастере 4 в одной форме, он автоматически перенаправляет меня на мастер 4 и в других формах из-за файлов cookie. Есть ли способ сохранить состояние только для этой конкретной формы?
- person Half Blood Prince; 30.12.2015
Я предполагаю, что вы используете один и тот же идентификатор для каждого мастера. Идентификатор атрибута html должен быть уникальным и использоваться только один раз для каждого документа. developer.mozilla.org/en-US/docs/Web/ HTML/глобальные_атрибуты/идентификатор
- person forsvunnet; 30.12.2015
Я применил класс «wizard-section» для каждого мастера. Но я не понимаю, при чем здесь печенье? Я имею в виду, что идентификатор/класс мастера будет одинаковым для разных форм, назначенных пользователю. Он будет использовать этот файл cookie jQu3ry_5teps_St%40te_wizard для каждой формы, и это вызывает проблему.
- person Half Blood Prince; 30.12.2015
Ключ 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