/ / jQuery.steps pomija krok - javascript, jquery, jquery-steps

jQuery.steps pomiń krok - javascript, jquery, jquery-steps

Korzystam z wtyczki jQuery.steps (http://www.jquery-steps.com/), aby poprowadzić użytkowników na wewnętrznej stronie internetowej.

Jak dotąd tak dobrze, teraz mam mały problemmam w tej chwili 5 kroków, co muszę teraz osiągnąć: jeśli w pierwszym kroku zostanie wybrana specjalna wartość z listy rozwijanej, muszę pominąć kroki 2 i 4, ponieważ nie są one w tej chwili wymagane.

Czy macie jakieś rozwiązanie?

Mam nadzieję, że dostaniesz moje pytanie i daj mi znać, jeśli potrzebujesz dodatkowych informacji.

Dzięki!

Odpowiedzi:

1 dla odpowiedzi № 1

w jquery.steps.js

dodaj klasę do <ul role="tablist" class="tablist"></ul> (linia 1037)

zmienić funkcje goToNextStep & goToPreviousStep do

var length_custom;
function goToNextStep(wizard, options, state)
{
length_custom = $("ul.tablist li.skip").length;
var newIndex = increaseCurrentIndexBy(state, 1);
var anchor = getStepAnchor(wizard,  newIndex),
parent = anchor.parent(),
isSkip = parent.hasClass("skip");
if(isSkip){
goToStep(wizard, options, state, newIndex + length_custom)
}else{
return paginationClick(wizard, options, state, newIndex);
}
}

function goToPreviousStep(wizard, options, state)
{
var newIndex = decreaseCurrentIndexBy(state, 1);
var anchor = getStepAnchor(wizard,  newIndex),
parent = anchor.parent(),
isSkip = parent.hasClass("skip");
if(isSkip){
goToStep(wizard, options, state, newIndex - length_custom)
}else{
return paginationClick(wizard, options, state, newIndex);
}
}

Następnie dodaj te funkcje na dole pliku

$.fn.steps.skip = function (i) {
var wizard = this,
options = getOptions(this),
state = getState(this);
if (i < state.stepCount) {
var stepAnchor = getStepAnchor(wizard, i);
stepAnchor.parent().addClass("skip");
refreshSteps(wizard, options, state, i);
}
};
$.fn.steps.unskip = function (i) {
var wizard = this,
options = getOptions(this),
state = getState(this);
if (i < state.stepCount) {
var stepAnchor = getStepAnchor(wizard, i);
stepAnchor.parent().removeClass("skip");
refreshSteps(wizard, options, state, i);
}
};

Teraz zainicjuj krok, który chcesz pominąć

$("#wizard").steps("skip", index);
$("#wizard").steps("skip", index);// if you want to skip more than one step
$("#wizard").steps("skip", index);// if you want to skip more than one step

Wyłącz pomijanie

$("#wizard").steps("unskip", index);
$("#wizard").steps("unskip", index);// if you want to unskip more than one step
$("#wizard").steps("unskip", index);// if you want to unskip more than one step

0 dla odpowiedzi nr 2

Są wydarzenia o nazwie onStepChanging , onStepChanged które można przekazać do form.steps . Możesz napisać funkcję, aby sprawdzić poprawność formularza i kroki w tym oparte na currentIndex,newIndex możesz uruchomić następną kartę.

Załączam tutaj połączyć za to samo, co by ci pomogło.