0

我正在尝试使用 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 中,我可以看到它导致页面崩溃和“超出堆栈限制”错误。

4

2 回答 2

0

发生这种情况是因为当您调用 $('#wizard').smartWizard('goToStep',4) 时再次触发 onLeaveStepFunction(),从而导致无限循环:

onLeave -> goToStep -> onLeave -> goToStep 等等。

于 2014-03-18T17:27:35.513 回答
0
  // 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);  

         }
    }
于 2018-04-24T08:53:50.300 回答