jQuery SmartWizard 3.0 - метод goToStep вызывает бесконечный цикл

Я пытаюсь использовать jQuery Wizard SmartEizard 3.0, у которого есть метод goToStep, позволяющий вам перейти к заданному шагу на основе логики. Я попробовал это с помощью приведенного ниже кода, но, похоже, он застрял в бесконечном цикле и никогда не переходит к следующему шагу. Кто-нибудь может определить, что я делаю здесь не так?

  $(document).ready(function () {

        // Smart Wizard     
        $('#wizard').smartWizard({
            enableFinishButton: false,
            onLeaveStep:onLeaveStepFunction,
            onFinish:onFinishCallback
        });

        function onLeaveStepFunction(obj, context) {
                .
                .
                .
                //when below is triggered, SmartWizard gets stuck in infinite loop
                if ('#addProfileCheckbox').prop('checked')){
                    $('#wizard').smartWizard('goToStep',4);                 
                }
                return true;
        }

        function onFinishCallback(){
            console.log('here ...');
        }

    });

В Chrome я вижу, что это приводит к сбою страницы и ошибке "Превышено ограничение стека".

2 ответа

Это происходит потому, что onLeaveStepFunction() снова вызывается при вызове $('#wizard'). SmartWizard('goToStep',4), вызывая бесконечный цикл:

onLeave -> goToStep -> onLeave -> goToStep и так далее.

  // wizard 展示事件
    function onShowAStepCallBack(obj, context)
    {
        // 如果等于三
        if (context.fromStep == 3) {
            $('#order-store-st').removeClass('handing');
        }
        var is_censor = $("#order-store-nd input[name=is_censor]").prop('checked');
        var is_warrantor = $("#order-store-nd input[name=is_warrantor]").prop('checked');

        if(context.fromStep == 5 && is_censor && is_warrantor){
            $('#order_wizard').smartWizard('goToStep',2);  

         }
    }
Другие вопросы по тегам