我正在使用SmartWizard 2.0(link),当用户点击“上一页”按钮或以任何方式在表单中向后移动时,我需要停止验证。
目前我正在使用
// Triggers whenever you change page/tab in wizard
function leaveStep(obj) {
$("form").validate();
if ($("form").valid())
return true;
return false;
}
我知道我可以使用
var currentStep = obj.attr('rel'); // get the current step number
找到currentStep,但我需要知道用户导航的方式 - 所以我需要知道“nextStep”。不知道这是否可行。
答案 0 :(得分:13)
如果有人发生这种事情(就像有人刚刚做的那样,并且由于他们的混淆而通过电子邮件发送给我):a newer version上有github。
除此之外,它还为对象提供了对象中的“fromStep”和“toStep”值。
例如:
$('#wizard').smartWizard({
onLeaveStep:function(obj, context) {
if (context.fromStep > context.toStep) {
// Going backward
} else {
// Going forward
}
}
});
答案 1 :(得分:8)
当触发onLeaveStep
时,您是否可以使用obj来确定方向?那么你只会在进入下一步时进行验证?
<强>更新强>
查看源代码后,我无法确定方向。然而,修补能力非常容易。在jquery.smartWizard-2.0.js中,从
更改第186行if(!options.onLeaveStep.call(this,$(curStep))){
到
if(!options.onLeaveStep.call(this,$(curStep),$(selStep))){
现在,您可以访问所选步骤锚点,从而访问所选步骤索引。要确定onLeaveStep处理程序中的方向,请执行以下操作:
// Triggers whenever you change page/tab in wizard
function leaveStep(from, to) {
var fromStepIdx = from.attr( "rel" );
var toStepIdx = to.attr( "rel" );
if ( toStepIdx < fromStepIdx )
{
return true;
}
$("form").validate();
if ($("form").valid())
return true;
return false;
}
答案 2 :(得分:6)
Mark的回答是正确的,您可以使用context.fromText和context.toStep来检测方向,但我发现没有return true;
,smartWizard可能无法验证转换(从第1步到第1步)允许2,而不是步骤1到3等,并允许它发生。
$('#wizard').smartWizard({
onLeaveStep:function(obj, context) {
if (context.fromStep > context.toStep) {
// Going backward
} else {
// Going forward
}
return true;
}
});