Как пропустить проверку при переходе назад - SmartWizard
Я использую ссылку Jquery SmartWizard, мне нужно остановить проверку, когда пользователь нажимает кнопку "Предыдущий" на любом шаге (по умолчанию на 1-м шаге кнопка "Предыдущий" отключена), кроме 1-го шага.
Вот мой код 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
}
2 ответа
Вы можете проверить как 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
});
... Очень разумная просьба. Попробуй это...
function leaveAStepCallback(anchor, context) {
//var step_num = obj.attr('rel');
if(context.toStep > context.fromStep)
return validateSteps(fromStep);
else
return true;
}
Документы предполагают, что вы можете получить fromStep и toStep из второго параметра, как показано. Я надеюсь, что это так! Если нет, поищите его. Это должно быть где-то там.