2015-11-17 3 views
0

Я использую Jquery smartwizard link, мне нужно остановить проверку, когда пользователь нажимает кнопку «Предыдущий» на любом этапе (по умолчанию на первом шаге кнопка «Предыдущая» отключена), кроме 1-го шага ,Как пропустить проверку при возврате назад - SmartWizard

Вот мой код Javascript

$(document).ready(function() { 
     // Smart Wizard  
     $('#wizard').smartWizard({ 
      transitionEffect: 'fade', 
      onLeaveStep: leaveAStepCallback, 
      onFinish: onFinishCallback, 
      enableFinishButton: false 
     }); 

     function leaveAStepCallback(obj) { 
      var step_num = obj.attr('rel'); 
      return validateSteps(step_num); 
     } 

     function onFinishCallback() { 
      if (validateAllSteps()) { 
       $('form').submit(); 
      } 
     } 
    }); 

    function validateAllSteps() { 
     var isStepValid = true; 
     if (validateStep1() == false) { 
      isStepValid = false; 
      $('#wizard').smartWizard('setError', { 
       stepnum: 1, 
       iserror: true 
      }); 
     } else { 
      $('#wizard').smartWizard('setError', { 
       stepnum: 1, 
       iserror: false 
      }); 
     } 
     if (validateStep2() == false) { 
      isStepValid = false; 
      $('#wizard').smartWizard('setError', { 
       stepnum: 2, 
       iserror: true 
      }); 
     } else { 
      $('#wizard').smartWizard('setError', { 
       stepnum: 2, 
       iserror: false 
      }); 
     } 
     if (validateStep3() == false) { 
      isStepValid = false; 
      $('#wizard').smartWizard('setError', { 
       stepnum: 3, 
       iserror: true 
      }); 
     } else { 
      $('#wizard').smartWizard('setError', { 
       stepnum: 3, 
       iserror: false 
      }); 
     } 
     if (!isStepValid) { 
      $('#wizard').smartWizard('showMessage', 'Please correct the errors in the steps and continue'); 
     } 
     return isStepValid; 
    } 

    function validateSteps(step) { 
     var isStepValid = true; 
     // validate step 1 
     if (step == 1) { 
      if (validateStep1() == false) { 
       isStepValid = false; 
       $('#wizard').smartWizard('showMessage', 'Please correct the errors in step' + step + ' and click next.'); 
       $('#wizard').smartWizard('setError', { 
        stepnum: step, 
        iserror: true 
       }); 
      } else { 
       $('#wizard').smartWizard('hideMessage'); 
       $('#wizard').smartWizard('setError', { 
        stepnum: step, 
        iserror: false 
       }); 
      } 
     } 
     // validate step2 
     if (step == 2) { 
      if (validateStep2() == false) { 
       isStepValid = false; 
       $('#wizard').smartWizard('showMessage', 'Please correct the errors in step' + step + ' and click next.'); 
       $('#wizard').smartWizard('setError', { 
        stepnum: step, 
        iserror: true 
       }); 
      } else { 
       $('#wizard').smartWizard('hideMessage'); 
       $('#wizard').smartWizard('setError', { 
        stepnum: step, 
        iserror: false 
       }); 
      } 
     } 
     // validate step3 
     if (step == 3) { 
      if (validateStep3() == false) { 
       isStepValid = false; 
       $('#wizard').smartWizard('showMessage', 'Please correct the errors in step' + step + ' and click next.'); 
       $('#wizard').smartWizard('setError', { 
        stepnum: step, 
        iserror: true 
       }); 
      } else { 
       $('#wizard').smartWizard('hideMessage'); 
       $('#wizard').smartWizard('setError', { 
        stepnum: step, 
        iserror: false 
       }); 
      } 
     } 
     return isStepValid; 
    } 

    function validateStep1() { 
     //Validation code here 
    } 

    function validateStep2() { 
     //Validation code here 
    } 

    function validateStep3() { 
     //Validation code here 
    } 
+0

Проверить эту ссылку http://stackoverflow.com/questions/9925255/skip-validation -when-going-backward-in-smartwizard – Suyog

ответ

0

... Очень разумный запрос. Попробуйте это ...

function leaveAStepCallback(anchor, context) { 
     //var step_num = obj.attr('rel'); 
     if(context.toStep > context.fromStep) 
      return validateSteps(fromStep); 
     else 
      return true; 
    } 

docs предложить вы можете получить fromStep и toStep от второго параметра, как показано на рисунке. Надеюсь, это так! Если нет, охота за ним. Это должно быть где-то.

+0

Когда я буду использовать эту форму, она будет отправляться без подтверждения – user3635258

+0

Нет. У вас есть событие onFinish, чтобы проверить все перед отправкой. – bbsimonbb

+0

Это работало? – bbsimonbb

0

Вы можете проверить как fromStep и toStep:

function nextStep(smartWizard, steps, context){ 
       if(steps.fromStep == 1 && steps.toStep == 2){ 
        // Do validations 
       } 
} 

Я использовал следующий мастер:

$('#wizard').smartWizard({ 
        onLeaveStep: nextStep // triggers when leaving a step 
      }); 
Смежные вопросы