2011-10-27 29 views
8

Tôi gặp sự cố nhỏ khi sử dụng plugin xác thực jQuery trong các dự án .net/MVC của tôi: Việc xác thực thường hoạt động tốt, vấn đề phát sinh tại thời điểm gửi: Tôi muốn biểu mẫu không được gửi khi có bất kỳ lỗi xác thực nào trong đó và cho điều này tôi đặt gỡ lỗi: true;Mẫu không được gửi với xác thực jQuery

Nhưng sau khi đặt thành đúng khi nút gửi không phản hồi, ngay cả khi mọi thứ đều ổn, tức là không có lỗi xác thực, không có gì xảy ra khi nhấp vào nút gửi. Và nếu gỡ lỗi gỡ lỗi: đúng là nó gửi biểu mẫu ngay cả khi có lỗi xác thực trong đó. Tôi muốn giải pháp cho vấn đề này, theo cách giữa, ví dụ: Khi nhấp vào gửi nếu có lỗi, nó sẽ không gửi biểu mẫu và hiển thị lỗi Và nếu không có lỗi thì đơn giản là gửi nó.

Trợ giúp plz .. Cảm ơn bạn!

<script type="text/javascript"> 
     $(document).ready(function() { 
$("#productSubmit").validate({ 
    debug : true, rules : { 
    prdctttle : { 
     maxlength : 50, 
     required : true, 
     onlyChars : true } 
    , prdctdscrptn : { 
     maxlength : 250, 
     required : true, 
     onlyChars : true } 
    } 
    , messages : { 
    } 
    } 
); 
} 
); 
$.validator.addMethod('onlyChars', function (value) { 
return /^[a-zA-Z ,-!]+$/.test(value); }, 'Please enter a valid name with only alphabets'); 
    $("#productSubmit").validate({ 
    submitHandler : function(form) { 
    if ($(form).valid()) form.submit(); return false; // prevent normal form posting 
    } 
    } 
); 
</script> 

Trả lời

11

Thay đổi dòng cuối cùng của bạn để kiểm tra xem các hình thức có giá trị trước khi trình:

$("#productSubmit").validate({ 
    submitHandler: function(form) {   
          if ($(form).valid()) 
           form.submit(); 
          return false; // prevent normal form posting 
        } 
}); 

EDIT: Tôi quên để thêm "return false;" để dừng biểu mẫu gửi bình thường (vì vậy nó chỉ xảy ra khi quá trình xác thực chuyển).

+0

tôi đã thay đổi dòng danh sách bằng mã của bạn, nhưng bây giờ toàn bộ tập lệnh xác thực đã ngừng hoạt động .. và khi nhấp vào gửi mà không nhập nethng jst làm mới và khi gửi sau khi điền chính xác tất cả thông tin. trình duyệt đưa ra lỗi "" Trang web này không có sẵn "" – Maven

+0

@Maven Darn, tôi có cảm giác có thể xảy ra. Hãy thử mã cập nhật của tôi. – GregL

+0

@DGregL, vẫn phải đối mặt với một số hành vi mệt mỏi, Bây giờ nếu tôi thử gửi một biểu mẫu trống, nó sẽ cung cấp lỗi xác thực 'Trường này là bắt buộc', nhưng sau khi tôi điền biểu mẫu và thử gửi nút gửi trở nên không phản hồi như trước. cộng với nó không kiểm tra lại để xác nhận thay đổi giá trị của nó như trước ..: s – Maven

2

Câu trả lời của GregL là đúng cho hầu hết các phần.

gì cuối cùng đã làm việc này một cách chính xác đối với tôi cũng là việc bổ sung:

onsubmit: false 

mã cuối cùng:

$("#productSubmit").validate({ 
onsubmit: false, 
submitHandler: function(form) { 
    if ($(form).valid()) 
    { 
     form.submit(); 
    } 
    return false; // prevent normal form posting 
} 
}); 

này ghi đè mặc định nộp hành vi, và xử lý các kiểm tra xác nhận chính thức và nộp hồ sơ trong trình gửi.

Các vấn đề liên quan