Dalam versi baru plugin validasi jQuery 1.9 dengan validasi default bidang tersembunyi diabaikan . Saya menggunakan CKEditor untuk bidang input textarea dan menyembunyikan bidang dan menggantinya dengan iframe. Field ada di sana, tetapi validasi dinonaktifkan untuk field tersembunyi. Dengan validasi plugin versi 1.8.1 semuanya berfungsi seperti yang diharapkan.
Jadi pertanyaan saya adalah bagaimana mengaktifkan validasi untuk bidang tersembunyi dengan plugin validasi v1.9.
Pengaturan ini tidak berfungsi:
$.validator.setDefaults({ ignore: '' });
jquery-validate
Dukun
sumber
sumber
<input type="text" name="myfield" id="myfield" required="required" style="display: none;">
. Saya tidak perlu mengubah pengaturan atau melakukan sesuatu yang istimewa.Jawaban:
Penulis plugin mengatakan Anda harus menggunakan "tanda kurung kotak tanpa tanda kutip" ,
[]
http://bassistance.de/2011/10/07/release-validation-plugin-1-9-0/
Untuk mengubah pengaturan ini untuk semua bentuk:
(Tidak harus
.setDefaults()
berada dalamdocument.ready
fungsi)ATAU untuk satu bentuk spesifik:
EDIT :
Lihat jawaban ini untuk cara mengaktifkan validasi pada beberapa bidang tersembunyi tetapi masih mengabaikan yang lain.
EDIT 2 :
Sebelum meninggalkan komentar bahwa "ini tidak berfungsi" , perlu diingat bahwa OP hanya bertanya tentang plugin jQuery Validate dan pertanyaannya tidak ada hubungannya dengan bagaimana ASP.NET, MVC, atau kerangka kerja Microsoft lainnya dapat mengubah normal plugin ini. perilaku yang diharapkan. Jika Anda menggunakan kerangka Microsoft, fungsi default plugin jQuery Validate ditulis berlebihan oleh
unobtrusive-validation
plugin Microsoft .Jika Anda kesulitan dengan
unobtrusive-validation
plugin, silakan lihat jawaban ini sebagai gantinya: https://stackoverflow.com/a/11053251/594235sumber
Ini bekerja untuk saya, di dalam situs ASP.NET MVC3 tempat saya meninggalkan kerangka kerja untuk menyiapkan validasi yang tidak mencolok, dll., Jika berguna bagi siapa pun:
sumber
Pastikan untuk dimasukkan
TIDAK di dalam
$(document).ready
sumber
$.validator.setDefaults()
ditempatkan di dalam atau di luar hander DOM. Bandingkan jsFiddle ini untuk jsFiddle ini .Jadi saya akan membahas lebih dalam mengapa ini tidak berhasil karena saya adalah tipe orang yang tidak bisa tidur di malam hari tanpa mengetahui haha. Saya menggunakan jQuery memvalidasi 1.10 dan Microsoft jQuery Unobtrusive Validation 2.0.20710.0 yang diterbitkan pada 1/29/2013.
Saya mulai dengan mencari metode setDefaults di jQuery Validate dan menemukannya pada baris 261 dari file yang tidak ditentukan. Semua fungsi ini benar-benar dilakukan adalah menggabungkan pengaturan json Anda ke yang sudah ada
$.validator.defaults
yang diinisialisasi dengan properti abaikan diatur ke ": disembunyikan" bersama dengan default lain yang didefinisikan dalam jQuery Validate. Jadi pada titik ini kita mengabaikan diabaikan. Sekarang mari kita lihat di mana properti default ini dirujuk.Ketika saya menelusuri kode untuk melihat di mana
$.validator.defaults
direferensikan. Saya perhatikan bahwa itu hanya digunakan oleh konstruktor untuk validator formulir, baris 170 di jQuery memvalidasi file yang tidak ditentukan.Pada titik ini validator akan menggabungkan pengaturan default apa pun yang ditetapkan dan melampirkannya ke form validator. Ketika Anda melihat kode yang melakukan validasi, penyorotan, penyorotan, dll mereka semua menggunakan objek validator.settings untuk menarik properti abaikan. Jadi kita perlu memastikan jika kita ingin mengatur abaikan dengan metode setDefaults maka itu harus terjadi sebelum $ ("form"). Validate () dipanggil.
Jika Anda menggunakan Asp.net MVC dan plugin yang tidak mencolok, maka Anda akan menyadari setelah melihat javascript yang divalidasi disebut dalam document.ready. Saya juga telah memanggil setDefaults saya di dokumen. Sudah blok yang akan mengeksekusi setelah skrip, jquery memvalidasi dan tidak mengganggu karena saya telah mendefinisikan skrip-skrip tersebut dalam html sebelum yang memiliki panggilan di dalamnya. Jadi panggilan saya jelas tidak berdampak pada fungsionalitas default melewatkan elemen tersembunyi selama validasi. Ada beberapa opsi di sini.
Opsi 1 - Anda bisa sebagai Juan Mellado menunjukkan memiliki panggilan di luar dokumen. Sudah yang akan mengeksekusi segera setelah skrip telah dimuat. Saya tidak yakin tentang waktu ini karena browser sekarang mampu melakukan pemuatan skrip paralel. Jika saya hanya terlalu berhati-hati maka tolong perbaiki saya. Juga, mungkin ada cara untuk mengatasi ini tetapi untuk kebutuhan saya, saya tidak menempuh jalan ini.
Opsi 2a - Taruhan aman di mata saya adalah dengan hanya mengganti bagian
$.validator.setDefaults({ ignore: '' });
dalam dokumen$("form").data("validator").settings.ignore = "";
. Sudah acara dengan . Ini akan mengubah properti abaikan yang sebenarnya digunakan oleh jQuery memvalidasi ketika melakukan setiap validasi pada elemen Anda untuk formulir yang diberikan.Opsi 2b - Setelah melihat kode sedikit lebih lanjut, Anda juga dapat menggunakan
$("form").validate().settings.ignore = "";
cara mengatur properti abaikan. Alasannya adalah bahwa ketika melihat fungsi validasi ia memeriksa untuk melihat apakah objek validator telah disimpan untuk elemen form melalui$.data()
fungsi. Jika ia menemukan objek validator yang disimpan dengan elemen form maka itu hanya mengembalikan objek validator daripada membuat yang lain.sumber
Ini bekerja untuk saya dalam situs ASP.NET. Untuk mengaktifkan validasi pada beberapa bidang tersembunyi gunakan kode ini
$("form").data("validator").settings.ignore = ":hidden:not(#myitem)";
Untuk mengaktifkan validasi untuk semua elemen formulir gunakan yang ini
$("form").data("validator").settings.ignore = "";
Perhatikan bahwa menggunakannya di dalam
$(document).ready(function() { })
sumber
Baru saja ditambahkan
ignore: []
di halaman spesifik untuk formulir spesifik, solusi ini berhasil untuk saya.sumber
Ini bekerja untuk saya.
sumber
Validasi bekerja untuk saya pada pengiriman formulir, tetapi tidak melakukan validasi yang didorong oleh peristiwa reaktif pada input ke daftar pilih yang dipilih.
Untuk memperbaikinya, saya menambahkan berikut ini untuk secara manual memicu acara validasi jquery yang ditambahkan oleh perpustakaan:
jquery.validate sekarang akan menambahkan
.valid
kelas ke daftar pilih yang mendasarinya.Peringatan: Ini memang membutuhkan pola html yang konsisten untuk input formulir Anda. Dalam kasus saya, setiap input yang diajukan dibungkus dengan
div.form-group
, dan setiap input memiliki.form-control
.sumber
Cukup temukan teks abaikan: ": disembunyikan" di file validasi jquery Anda dan beri komentar. Setelah mengomentari ini, elemen tersembunyi tidak akan pernah hilang untuk memvalidasi ...
Terima kasih
sumber