jQuery Validate Plugin - Memicu validasi bidang tunggal

90

Saya punya formulir yang secara opsional dapat diisi sebelumnya melalui koneksi facebook. Setelah pengguna terhubung, nama dan email mereka otomatis terisi. Masalahnya adalah ini tidak memicu validasi jarak jauh untuk memeriksa apakah email sudah ada.

Apakah ada cara saya dapat memanggil validasi di bidang itu saja? Sesuatu seperti:

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

akan menjadi ide. Mencari melalui dokumen tidak berhasil.

ryan
sumber

Jawaban:

147

Metode ini sepertinya melakukan apa yang Anda inginkan:

$('#email-field-only').valid();
Gregoire
sumber
4
Catatan: nama elemen bentuk juga berfungsi dengan fungsi ini, yaitu $('input[name=email-field-only]').valid();juga berfungsi
Raptor
1
Apa masalahnya? ketika saya menggunakan metode ini validasi saya rusak
nakajuice
2
Solusi ini memvalidasi seluruh formulir, menampilkan pesan kesalahan untuk semua bidang.
Pablo
@haemhweg, mungkin Anda tidak memanggil metode .validate () sebelum mencoba menggunakan .valid () ? Dokumen: jqueryvalidation.org/valid
userfuser
1
API telah berubah, gunakan jawaban yang disediakan oleh Paul
Anima-t3d
24

Penggunaan Validator.element():

Memvalidasi satu elemen, menampilkan true jika valid, false jika tidak.

Berikut adalah contoh yang ditampilkan di API:

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

.valid()memvalidasi seluruh formulir, seperti yang ditunjukkan orang lain. API mengatakan:

Memeriksa apakah formulir yang dipilih valid atau apakah semua elemen yang dipilih valid.

Paul
sumber
20

Untuk beberapa alasan, beberapa metode lain tidak berfungsi hingga bidang difokuskan / diburamkan / diubah, atau pengiriman telah dicoba ... ini berfungsi untuk saya.

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

Harus menggali skrip jquery.validate untuk menemukannya ...

Pelacak 1
sumber
1
Inilah yang berhasil untuk saya, saya juga menambahkan .valid()di bagian akhir sehingga mencari saya, $("#Form").data('validator').element('input[name=__Suburb]').valid(); saya percaya bahwa jika Anda tidak memilihnya dengan ID, ini mungkin diperlukan.
Mihai P.
2
Saya tidak berpikir cocok .valid()di akhir ekspresi. The .element()fungsi mengembalikan hasil boolean ( docs | src ). Ketika saya mencoba memanggil .valid () saya mendapatkan pesan kesalahan: "Uncaught TypeError: $(...).data(...).element(...).validis not a function"
KyleMit
Apakah Anda melampirkan validator ke formulir? sudah beberapa tahun sejak saya menggunakan validasi JQuery ... Jadi API untuk ini mungkin telah berubah. Pada saat itu saya harus bekerja melalui internal untuk menemukan yang di atasnya. Itu tidak dipublikasikan dalam dokumentasi sehingga strukturnya mungkin telah berubah sejak terakhir kali saya melihatnya.
Pelacak1
16
$("#FormId").validate().element('#FieldId');
aslanpayi
sumber
2
Saya lebih suka metode ini, ini adalah 1 liner yang bagus. Bekerja dengan baik, terima kasih.
Andy
1
Ini adalah jawaban sempurna tanpa kesalahan dengan tipe pengembalian yang valid
Kaushik Thanki
7

Saat Anda menyiapkan validasi, Anda harus menyimpan objek validator. Anda dapat menggunakan ini untuk memvalidasi bidang individu.

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

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

- posting silang dengan pertanyaan serupa ini

ShaneBlake
sumber
7

Jika Anda ingin memvalidasi bidang formulir individual, tetapi tidak ingin UI dipicu dan menampilkan kesalahan validasi apa pun, Anda dapat mempertimbangkan untuk menggunakan metode Validator.check () yang mengembalikan jika bidang yang diberikan lolos validasi atau tidak.

Berikut ini contohnya

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

jika Anda ingin melakukan validasi untuk "beberapa elemen" (tidak semua elemen) pada formulir Anda. Anda dapat menggunakan metode ini:

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

Semoga membantu semua orang :)

DIEDIT

Peps
sumber
-6
$("#element").validate().valid()
John
sumber