Пропустить проверку при переходе назад в SmartWizard - PullRequest
6 голосов
/ 29 марта 2012

Я использую 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, но мне нужно знать, каким образом пользователь перемещается - поэтому янужно знать «следующий шаг».Не знаю, возможно ли это.

Ответы [ 3 ]

13 голосов
/ 01 ноября 2012

В случае, если кто-то случится с этим позже (как кто-то только что сделал и отправил мне электронное письмо из-за своей путаницы): доступна более новая версия на *1003* github .

Помимо прочего, он обеспечивает ваш обратный вызов со значениями «fromStep» и «toStep» в объекте.

Например:

$('#wizard').smartWizard({
    onLeaveStep:function(obj, context) {
        if (context.fromStep > context.toStep) {
            // Going backward
        } else {
            // Going forward
        }
    }
});
8 голосов
/ 07 апреля 2012

Когда срабатывает 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;
}
6 голосов
/ 15 ноября 2012

Ответ Марка правильный, вы можете использовать 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;
}
});
...