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);
}
}