2012-03-29 13 views
5

Używam SmartWizard 2.0 (link) i muszę zatrzymać sprawdzanie poprawności przed kopaniem, gdy użytkownicy klikną przycisk "Wstecz" lub w jakikolwiek sposób przejdą do tyłu w formularzu.Pomijanie sprawdzania podczas cofania w SmartWizard

Obecnie używam

// Triggers whenever you change page/tab in wizard  
function leaveStep(obj) {   
    $("form").validate(); 
    if ($("form").valid()) 
     return true; 

    return false; 
} 

wiem, że mogę używać

var currentStep = obj.attr('rel'); // get the current step number 

znaleźć currentStep, ale muszę wiedzieć, w jaki sposób użytkownik nawiguje - więc muszę wiedzieć Następny krok". Nie wiem, czy to możliwe.

Odpowiedz

7

Po uruchomieniu onLeaveStep nie można użyć obiektu obj, aby określić kierunek? Czy mógłbyś zatwierdzić tylko, przechodząc do następnego kroku?

Aktualizacja:

Po zapoznaniu się z kodu źródłowego, nie ma możliwości, że widzę, aby dowiedzieć się kierunek. Łatanie w łatanie jest jednak całkiem łatwe. Zgodnie zmian jquery.smartWizard-2.0.js 186 z

if(!options.onLeaveStep.call(this,$(curStep))){ 

do

if(!options.onLeaveStep.call(this,$(curStep),$(selStep))){ 

To teraz daje dostęp do wybranej kotwicy kroku, a więc wybrany indeks kroku. Aby określić kierunek w swojej onLeaveStep handler proste wykonaj następujące czynności:

// Triggers whenever you change page/tab in wizard  
function leaveStep(from, to) { 
    var fromStepIdx = from.attr("rel"); 
    var toStepIdx = to.attr("rel"); 

    if (toStepIdx < fromStepIdx) 
    { 
     return true; 
    } 

    $("form").validate(); 
    if ($("form").valid()) 
     return true; 

    return false; 
} 
+0

To byłoby czego szukam - ale nie mogę dowiedzieć się, jak określić kierunek jako obj, o ile mi wiadomo, tylko powiedzieć, że jestem na etapie 2, a nie tam, gdzie jestem idę do następnego. Jeśli wiesz o czymś więcej, to na pewno ci pomoże! – Stian

+0

Zaktualizowałem swoją odpowiedź z praktycznym rozwiązaniem. Jeśli to rozwiąże Twój problem, zalecam utworzenie i przesłanie łatki tutaj: http://sourceforge.net/projects/smartwizard/ –

+0

jesteś moim bohaterem, nagrodą za wszystko - dziękuję! – Stian

12

W przypadku ktoś się dzieje na tym później (jak ktoś tak zrobił, a mi mejla ze względu na ich błąd): Jest a newer version dostępny na github.

Umożliwia między innymi wywoływanie zwrotne wartościami "fromStep" i "toStep" w obiekcie.

Na przykład:

$('#wizard').smartWizard({ 
    onLeaveStep:function(obj, context) { 
     if (context.fromStep > context.toStep) { 
      // Going backward 
     } else { 
      // Going forward 
     } 
    } 
}); 
5

odpowiedź Marka jest poprawna, można użyć context.fromText i context.toStep do wykrywania kierunku, ale uważam, że bez return true;, smartWizard nie może potwierdzić przejście (począwszy od krok 1 do 2 jest dozwolony, a nie etap 1 do 3 itd.) i pozwolić na wystąpienie.

$('#wizard').smartWizard({ 
onLeaveStep:function(obj, context) { 
    if (context.fromStep > context.toStep) { 
     // Going backward 
    } else { 
     // Going forward 
    } 
    return true; 
} 
});