2012-03-29 30 views
5

Tôi đang sử dụng SmartWizard 2.0 (link) và tôi cần dừng xác thực khi khởi động khi người dùng nhấn vào nút "Trước" hoặc theo bất kỳ cách nào lùi trong biểu mẫu.Bỏ qua xác thực khi đi ngược lại trong SmartWizard

Hiện nay tôi đang sử dụng

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

    return false; 
} 

tôi biết rằng tôi có thể sử dụng

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

để tìm currentStep, nhưng tôi cần phải biết cách mà người dùng sẽ được điều hướng - vì vậy tôi cần phải biết bước tiếp theo". Không biết nếu điều này là có thể.

Trả lời

7

Khi onLeaveStep được kích hoạt, bạn có thể không sử dụng obj để xác định hướng không? Sau đó, bạn sẽ chỉ xác nhận khi chuyển sang bước tiếp theo?

Cập nhật:

Sau khi xem xét mã nguồn, không có cách nào mà tôi có thể xem để tìm ra hướng. Tuy nhiên, khả năng vá lỗi là khá dễ dàng. Trong dòng thay đổi jquery.smartWizard-2.0.js 186 từ

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

để

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

này bây giờ mang đến cho bạn truy cập vào các bước neo chọn, và do đó chỉ số bước được chọn. Để xác định hướng trong handler onLeaveStep của bạn đơn giản làm như sau:

// 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

Đó sẽ là những gì tôi đang tìm kiếm - nhưng tôi không thể tìm ra cách xác định hướng như obj, theo như tôi biết, chỉ cho tôi biết rằng tôi đang ở bước 2, không phải là nơi tôi tiếp theo. Nếu bạn biết bất cứ điều gì thêm về điều đó nó chắc chắn sẽ giúp đỡ! – Stian

+0

Tôi đã cập nhật câu trả lời của mình bằng giải pháp khả thi. Nếu điều này giải quyết vấn đề của bạn thì tôi khuyên bạn nên tạo và gửi một bản vá tại đây: http://sourceforge.net/projects/smartwizard/ –

+0

bạn là anh hùng của tôi, tiền thưởng tất cả của bạn - cảm ơn! – Stian

12

Trong bất cứ trường hợp xảy ra khi sau này (như ai đó vừa làm, và gửi qua email cho tôi do sự nhầm lẫn của họ): Có a newer version sẵn trên github.

Trong số những thứ khác, nó cung cấp gọi lại của bạn với các giá trị "fromStep" và "toStep" trong một đối tượng.

Ví dụ:

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

câu trả lời của Mark là đúng, bạn có thể sử dụng context.fromText và context.toStep để phát hiện phương hướng, nhưng tôi thấy rằng nếu không có return true;, smartWizard có thể không xác nhận việc chuyển tiếp (đi từ bước 1 đến 2 được cho phép, không phải bước 1 đến 3, vv) và cho phép nó xảy ra.

$('#wizard').smartWizard({ 
onLeaveStep:function(obj, context) { 
    if (context.fromStep > context.toStep) { 
     // Going backward 
    } else { 
     // Going forward 
    } 
    return true; 
} 
}); 
Các vấn đề liên quan