2013-05-24 11 views
5

Xác thực không phô trương dựa trên ý tưởng rằng bạn không thực hiện xác thực biểu mẫu cho đến khi biểu mẫu được người dùng gửi; một khi điều đó xảy ra, nếu một cái gì đó không hợp lệ trên biểu mẫu, thì mỗi trường sẽ được xác thực ngay lập tức khi người dùng đã thay đổi nó.Kích hoạt xác thực biểu mẫu jQuery chỉ khi biểu mẫu đã được gửi?

Điều tôi muốn làm là xác thực trình kích hoạt trên phần tử biểu mẫu "không phô trương" - nghĩa là, chỉ chỉ xác thực phần tử biểu mẫu nếu người dùng đã cố gắng gửi biểu mẫu. Vì vậy, tôi có thể kích hoạt các xác nhận của một phần tử (Tôi làm điều đó khi một hộp kiểm nào đó được thay đổi) như sau:

$('#chkNoPersonId').change(function(){ 
    $('#lstPersonId').valid(); 
}); 

Nhưng những rắc rối là điều đó sẽ luôn nguyên nhân lstPersonId để được xác nhận và một lỗi hiển thị khi không hợp lệ, ngay cả khi người dùng chưa gửi biểu mẫu sau khi. Tôi muốn nó chỉ được xác thực khi người dùng đã cố gửi biểu mẫu. Có một số giá trị mà tôi có thể kiểm tra để xem liệu người dùng đã cố gắng gửi biểu mẫu chưa, hoặc một cách khác để tôi có thể đạt được hành vi này?

+1

mặc dù tôi không nhận được câu hỏi của bạn ngay tôi cố gắng đoán. Có một trình xử lý sự kiện() có thể được sử dụng như sau: $ ('# myForm'). Submit (function() { // Thực hiện một khi biểu mẫu đã được gửi }); – thpl

Trả lời

5

Bạn có thể thêm một lá cờ trên nút gửi để xác định gửi biểu mẫu đã được đã nhấp hay không. ví dụ:

$('#submitButn').click(function(){ 
    $(this).attr('data-submitted','true'); 
}); 

Thần trong từng xác nhận đầu vào thời tiết kiểm tra rằng lá cờ là đúng hay không và thực hiện logic xác nhận của bạn.

$('#chkNoPersonId').change(function(){ 
    if($('#submitButn').attr('data-submitted')=='true'){ 
    $('#lstPersonId').valid(); 
    } 
}); 

On rõ ràng hoặc thiết lập lại của mẫu bạn có thể loại bỏ thuộc tính mà

$('#submitButn').removeAttr('data-submitted'); 
+2

Tôi thực sự đã kết thúc bằng cách sử dụng chức năng 'data' của jQuery (' .data ('submit', true) 'trên form submit) thay vì' attr' để nhớ khi form đã được submit, nhưng về cơ bản tôi đã sử dụng giải pháp này. Cảm ơn. – Jez

1

Bạn đã thử sử dụng trình xử lý sự kiện submit chưa?

$("form").submit(function() { 
    //validate here 
}); 

nguồn: http://api.jquery.com/submit/