7

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

目前我正在使用

// 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”。不知道这是否可能。

4

3 回答 3

13

万一以后有人发生这种情况(就像有人刚刚做的那样,由于他们的困惑而给我发了电子邮件):github上有一个更新的版本

除其他外,它为您的回调提供对象中的“fromStep”和“toStep”值。

例如:

$('#wizard').smartWizard({
    onLeaveStep:function(obj, context) {
        if (context.fromStep > context.toStep) {
            // Going backward
        } else {
            // Going forward
        }
    }
});
于 2012-10-31T20:51:16.793 回答
9

什么时候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;
}
于 2012-04-07T17:13:05.357 回答
7

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

$('#wizard').smartWizard({
onLeaveStep:function(obj, context) {
    if (context.fromStep > context.toStep) {
        // Going backward
    } else {
        // Going forward
    }
    return true;
}
});
于 2012-11-15T03:28:31.247 回答