2012-03-29 84 views
5

我正在使用SmartWizard 2.0(link),當用戶點擊「上一步」按鈕或以任何方式向後移動時,我需要停止踢入驗證。在SmartWizard中向後跳時跳過驗證

目前我使用

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

    return false; 
} 

我知道,我可以使用

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

找到currentStep,但我需要知道用戶正在瀏覽哪個方向 - 所以我需要知道下一步」。不知道這是否可能。

回答

7

onLeaveStep被觸發時,您是否可以不使用obj來確定方向?那麼只有在轉向下一步時才能驗證?

更新時間:

查看源代碼後,沒有辦法,我可以看到找出方向。然而,修補該技能非常容易。在jquery.smartWizard-2.0.js變線186從

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

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

現在,這使您可以訪問所選步驟錨,因此所選擇的階躍折射率。要在onLeaveStep處理簡單的確定方向做到以下幾點:

// 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

這將是我正在尋找的 - 但我不知道如何確定方向作爲obj,據我所知,只告訴我,我在步驟2,而不是我在哪裏下一步。如果你知道更多關於它的信息,那肯定會有幫助! – Stian 2012-04-07 22:06:58

+0

我已經用可行的解決方案更新了我的答案。如果這解決了你的問題,那麼我建議在這裏創建並提交一個補丁:http://sourceforge.net/projects/smartwizard/ – 2012-04-08 00:31:36

+0

你是我的英雄,賞賜你的全部 - 謝謝! – Stian 2012-04-09 13:23:28

12

如果有人碰巧在此之後(如某人只是做了,並給我發電子郵件由於他們的困惑):有上githuba newer version可用。

其中,它提供回調時在對象中使用「fromStep」和「toStep」值。

例如:

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

馬克的答案是正確的,你可以使用context.fromText和context.toStep檢測方向,但是我發現沒有return true;,智能嚮導可能無法驗證轉換(從去允許步驟1至2,而不是步驟1至3等)並允許其發生。

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