在SmartWizard中向后跳过时跳过验证

时间:2012-03-29 12:25:36

标签: jquery asp.net-mvc-3 smart-wizard

我正在使用SmartWizard 2.0(link),当用户点击“上一页”按钮或以任何方式在表单中向后移动时,我需要停止验证。

目前我正在使用

// 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,但我需要知道用户导航的方式 - 所以我需要知道“nextStep”。不知道这是否可行。

3 个答案:

答案 0 :(得分:13)

如果有人发生这种事情(就像有人刚刚做的那样,并且由于他们的混淆而通过电子邮件发送给我):a newer version上有github

除此之外,它还为对象提供了对象中的“fromStep”和“toStep”值。

例如:

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

答案 1 :(得分:8)

当触发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;
}

答案 2 :(得分:6)

Mark的回答是正确的,您可以使用context.fromText和context.toStep来检测方向,但我发现没有return true;,smartWizard可能无法验证转换(从第1步到第1步)允许2,而不是步骤1到3等,并允许它发生。

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