2012-03-29 13 views
5

Estoy usando el SmartWizard 2.0 (link) y necesito detener la validación cuando los usuarios presionen el botón "Anterior" o se muevan hacia atrás en el formulario.Omitir validación al ir hacia atrás en SmartWizard

Actualmente estoy usando

// Triggers whenever you change page/tab in wizard  
function leaveStep(obj) {   
    $("form").validate(); 
    if ($("form").valid()) 
     return true; 

    return false; 
} 

Sé que puedo usar

var currentStep = obj.attr('rel'); // get the current step number 

para encontrar el CurrentStep, pero necesito saber de qué manera el usuario está navegando - por lo que necesito saber el siguiente paso". No sé si esto es posible.

Respuesta

7

Cuando se activa onLeaveStep, ¿no podría usar el obj para determinar la dirección? Entonces, ¿solo validaría al pasar al siguiente paso?

Actualizado:

Después de mirar el código fuente, no hay manera de que yo pueda ver a averiguar la dirección. Sin embargo, emparejar la habilidad es bastante fácil. En cambio la línea jquery.smartWizard-2.0.js 186 de

if(!options.onLeaveStep.call(this,$(curStep))){ 

a

if(!options.onLeaveStep.call(this,$(curStep),$(selStep))){ 

Esto ahora le da acceso al anclaje paso seleccionado, y por lo tanto el índice de paso seleccionado. Para determinar la dirección en su sencilla manejador onLeaveStep haga lo siguiente:

// 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; 
} 
+0

Eso sería lo que estoy buscando - pero no puedo encontrar la manera de determinar la dirección que el obj, por lo que yo sé, sólo me dirá que estoy en el paso 2, no se donde estoy yendo a la próxima. ¡Si sabes algo más sobre eso, seguro que ayudaría! – Stian

+0

He actualizado mi respuesta con una solución viable. Si esto resuelve tu problema, te recomiendo crear y enviar un parche aquí: http://sourceforge.net/projects/smartwizard/ –

+0

eres mi héroe, generosidad tuya, ¡gracias! – Stian

12

En caso de que alguien pasa sobre esto más adelante (como alguien acaba de hacer, y me envió por correo electrónico debido a su confusión): No disponible en a newer versiongithub.

Entre otras cosas, proporciona su devolución de llamada con valores "fromStep" y "toStep" en un objeto.

Por ejemplo:

$('#wizard').smartWizard({ 
    onLeaveStep:function(obj, context) { 
     if (context.fromStep > context.toStep) { 
      // Going backward 
     } else { 
      // Going forward 
     } 
    } 
}); 
5

respuesta de Marcos es correcta, se puede utilizar el context.fromText y context.toStep para detectar la dirección, pero he encontrado que sin return true;, SmartWizard no puede validar la transición (al pasar de los pasos 1 a 2 están permitidos, no los pasos 1 a 3, etc.) y permiten que ocurra.

$('#wizard').smartWizard({ 
onLeaveStep:function(obj, context) { 
    if (context.fromStep > context.toStep) { 
     // Going backward 
    } else { 
     // Going forward 
    } 
    return true; 
} 
});