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

マークの答えは正しいです。context.fromTextとcontext.toStepを使用して方向を検出できますが、これがないreturn true;と、smartWizardは遷移を検証できない可能性があります(ステップ1から3ではなく、ステップ1から2への移行が許可されます)。 )そしてそれが発生するのを待ちます。

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