Переход к пользовательскому шагу с шагами jQuery
Я использую jQuery-steps в своем приложении, чтобы создать такую ситуацию. Тем не менее, у меня возникли проблемы с поиском того, как можно перейти к пользовательскому шагу. Любая помощь с этим?
$(function () {
$("#wizard").steps({
headerTag: "h2",
bodyTag: "section",
transitionEffect: "slideLeft",
enableFinishButton: false,
labels: {
next: $('#next').html(),
previous : $('#previous').html()
},
onStepChanged: function (event, currentIndex, priorIndex)
{
if( priorIndex == 0) {
var selected = $('input[name=radio_wizard]:checked', '#radio_wizard').val()
switch( selected ){
case 1:
// GOTO 1
break;
case 2:
// GOTO 2
break;
case 3:
// GOTO 3
break;
}
}
}
}
Как это сделать?
Ответы
Ответ 1
Я сделал это, поэтому создал новую функцию:
function _goToStep(wizard, options, state, index)
{
return paginationClick(wizard, options, state, index);
}
И вызов, который не реализован, поместите это:
$.fn.steps.setStep = function (step)
{
var options = getOptions(this),
state = getState(this);
return _goToStep(this, options, state, step);
};
Просто воспользовавшись тем, что уже существовал плагин.
Использование:
wizard.steps("setStep", 1);
Ответ 2
Я нашел простой способ сделать это.
вы можете использовать функцию jquery
$("#wizard-t-2").get(0).click();
Предполагая, что вы знаете, на какой шаг вы хотите пойти.
этот пример приведет вас к третьему шагу мастера.
используйте редактор хромов, чтобы выяснить, какой именно идентификатор находится на шаге, к которому вы хотите перейти.
Ответ 3
stepsWizard = $("#wizard").steps({
forceMoveForward : true,
enablePagination: false,
titleTemplate : '<span class="number">#index#.</span> #title#'
});
stepsWizard.steps("next"); // this will send us on next step :-)
Ответ 4
Основываясь на документации, на данный момент, похоже, не хватает этой функциональности:
/*
* Sets a specific step object by index.
*
* @method setStep
* @param index {Integer} An integer that belongs to the position of a step
* @param step {Object} The step object to change
*
*/
$.fn.steps.setStep = function (index, step)
{
throw new Error("Not yet implemented!");
};
Ответ 5
Основываясь на ответе @AbdulJamal, я внедрил его для любого шага:
$(function () {
var stepsWizard = $("#wizard").steps({
...
});
// step variable handles current step (from 0)
for(var i=0; i<step; i++) {
stepsWizard.steps("next");
}
});
Обратите внимание, что переменная step
должна быть определена и равна или больше 0.
Ответ 6
Проверьте мою следующую реализацию: Как вы думаете, ребята?
$.fn.steps.setStep = function (step)
{
var currentIndex = $(this).steps('getCurrentIndex');
for(var i = 0; i < Math.abs(step - currentIndex); i++){
if(step > currentIndex) {
$(this).steps('next');
}
else{
$(this).steps('previous');
}
}
};
И вы можете легко выполнить новый метод:
$("#form").steps("setStep", 4); //based on 0 (set the index)
С уважением, Николс
Ответ 7
функция GotoSpecificStep (действие, текущий шаг, число) {
try
{
var stepsTogo = parseInt(currentStep) - parseInt(number);
for (i = 1; i <= Math.abs(parseInt(stepsTogo)) ; i++) {
if (action == "next") {
$(".btnNext").click();
}
else if (action == "prev") {
$(".btnPrevious").click();
}
}
}
catch(exception)
{
MsgBox(exception.message);
}
}
Ответ 8
Добавляя к ответ выше @FernandoTholl, для уточнения, wizard.steps("setStep", 1);
идет в onStepChanged
$('#wizard').steps({
onStepChanging: function (event, currentIndex, newIndex) {
//blah, blah, blah, some code here
},
onStepChanged: function (event, currentIndex, newIndex) {
$('#wizard').steps("setStep", 3);
},
onFinished: function () {
///more code
}
});
Ответ 9
Я сделал что-то вроде ниже, чтобы это сработало:
stepsWizard = $("#wizard").steps({
headerTag: "h2",
bodyTag: "section"
});
var indx = 3;
for (i = 0; i <= indx; i++) {
stepsWizard.steps("next");
}
Ответ 10
Еще одно простое решение:
var desiredStep = 0;
$("#steps-uid-0-t-" + desiredStep).click();