jQuery Validate Plugin - Kích hoạt xác thực một trường


89

Tôi có một biểu mẫu có thể được điền trước tùy chọn thông qua kết nối facebook. Sau khi người dùng kết nối, tên và email của họ sẽ tự động được điền vào. Vấn đề là điều này không kích hoạt xác thực từ xa để kiểm tra xem email đã tồn tại hay chưa.

Có cách nào tôi có thể gọi xác thực trên trường đó một mình không? Cái gì đó như:

$('#email-field-only').validate()

sẽ là ý tưởng. Đã tìm kiếm thông qua các tài liệu mà không có may mắn.

Câu trả lời:


146

Phương pháp này dường như làm những gì bạn muốn:

$('#email-field-only').valid();

4
Lưu ý: Tên yếu tố hình thức cũng hoạt động với chức năng này, tức là $('input[name=email-field-only]').valid();cũng làm việc
Raptor

1
vấn đề là gì khi tôi sử dụng phương pháp này phá vỡ xác nhận của tôi
nakajuice

2
Giải pháp này xác thực toàn bộ biểu mẫu, hiển thị thông báo lỗi cho tất cả các trường.
Pablo

@haemhweg, có thể bạn đã không gọi phương thức .validate () trước khi cố gắng sử dụng .valid () ? Tài liệu: jqueryvalidation.org/valid
userfuser

1
API đã thay đổi, sử dụng câu trả lời cung cấp bởi Paul
Anima-t3d

23

Sử dụng Validator.element():

Xác thực một phần tử duy nhất, trả về true nếu nó hợp lệ, ngược lại là false.

Đây là ví dụ được hiển thị trong API:

var validator = $( "#myform" ).validate();
validator.element( "#myselect" );

.valid()xác thực toàn bộ biểu mẫu, như những người khác đã chỉ ra. API cho biết:

Kiểm tra xem biểu mẫu đã chọn có hợp lệ hay không hoặc liệu tất cả các phần tử đã chọn có hợp lệ hay không.


20

Vì một số lý do, một số phương pháp khác không hoạt động cho đến khi trường được lấy tiêu điểm / làm mờ / thay đổi hoặc gửi đã được thử ... điều này phù hợp với tôi.

$("#formid").data('validator').element('#element').valid();

Phải đào qua tập lệnh jquery.validate để tìm nó ...


1
Đây là những gì đã làm việc cho tôi, tôi cũng đã thêm .valid()vào cuối nên nó đã tìm kiếm cho tôi $("#Form").data('validator').element('input[name=__Suburb]').valid(); Tôi tin rằng nếu bạn không chọn nó bằng ID, điều này có thể được yêu cầu.
Mihai P.

2
Tôi không nghĩ .valid()thuộc về phần cuối của biểu thức. Các .element()chức năng trả về một kết quả boolean ( tài liệu | src ). Khi tôi cố gắng gọi .valid () Tôi nhận được thông báo lỗi: "của router Lỗi Loại: $(...).data(...).element(...).validkhông phải là một chức năng"
KyleMit

Bạn đã đính kèm trình xác thực vào biểu mẫu chưa? Đã vài năm kể từ khi tôi sử dụng xác thực JQuery ... Vì vậy, API cho việc này có thể đã thay đổi. Vào thời điểm đó, tôi đã phải làm việc thông qua nội bộ để tìm thấy nó ở trên. Nó không được xuất bản trong tài liệu nên cấu trúc có thể đã thay đổi kể từ lần cuối tôi xem.
Tracker

16
$("#FormId").validate().element('#FieldId');

2
Tôi thích phương pháp này hơn, đó là 1 lớp lót đẹp. Hoạt động tuyệt vời, cảm ơn.
Andy

1
Đây là câu trả lời hoàn hảo mà không có bất kỳ lỗi nào với loại trả lại hợp lệ
Kaushik Thanki

7

Khi bạn thiết lập xác thực của mình, bạn nên lưu đối tượng xác nhận. bạn có thể sử dụng điều này để xác nhận các trường riêng lẻ.

<script type="text/javascript">
var _validator;
$(function () {    
     _validator = $("#form").validate();   
});

function doSomething() {    
     _validator.element($('#someElement'));
}
</script> 

- đăng chéo với câu hỏi tương tự này


7

Nếu bạn muốn xác thực trường biểu mẫu riêng lẻ, nhưng không muốn giao diện người dùng được kích hoạt và hiển thị bất kỳ lỗi xác thực nào, bạn có thể xem xét sử dụng phương thức Validator.check () trả về nếu trường đã cho vượt qua xác thực hay không.

Đây là ví dụ

var validator = $("#form").data('validator');
if(validator.check('#element')){
    /*field is valid*/
}else{
    /*field is not valid (but no errors will be displayed)*/
}

0

trong trường hợp bạn muốn xác thực "một số phần tử" (không phải tất cả phần tử) trên biểu mẫu của bạn. Bạn có thể sử dụng phương pháp này:

$('input[name="element-one"], input[name="element-two"], input[name="element-three"]').valid();

Hy vọng nó sẽ giúp mọi người :)

ĐÃ CHỈNH SỬA


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.