Saya menggunakan plugin validasi jQuery untuk validasi sisi klien. Fungsinya editUser()
disebut pada klik tombol 'Edit Pengguna', yang menampilkan pesan kesalahan.
Tapi saya ingin menghapus pesan kesalahan pada formulir saya, ketika saya mengklik tombol 'Hapus', yang memanggil fungsi yang terpisah clearUser()
.
function clearUser() {
// Need to clear previous errors here
}
function editUser(){
var validator = $("#editUserForm").validate({
rules: {
userName: "required"
},
errorElement: "span",
messages: {
userName: errorMessages.E2
}
});
if(validator.form()){
// Form submission code
}
}
jquery
jquery-validate
Vicky
sumber
sumber
resetForm()
tidak menghapus semua instance.error
pada elemen turunan dari form. Ini akan meninggalkan sisa CSS seperti warna teks merah kecuali Anda menelepon.removeClass()
. Contoh:$('#myform .control-group').removeClass('error');
Saya menemukan masalah ini sendiri. Saya memiliki kebutuhan untuk memvalidasi bagian-bagian dari suatu bentuk sementara syarat sedang dibangun berdasarkan langkah-langkah (yaitu input tertentu secara dinamis ditambahkan selama runtime). Akibatnya, kadang-kadang dropdown pilih akan membutuhkan validasi, dan kadang-kadang tidak. Namun, pada akhir cobaan, itu perlu divalidasi. Akibatnya, saya membutuhkan metode yang kuat yang bukan solusi. Saya berkonsultasi dengan kode sumber untuk
jquery.validate
.Inilah yang saya pikirkan:
Berikut ini tampilannya dalam kode:
diperkecil sebagai ekstensi jQuery:
sumber
showErrors
melakukan manipulasi DOM dan itu dipanggil untuk setiap elemen dalam formulir. Browser membeku selama beberapa detik saat menggunakan kode ini pada formulir dengan ~ 30 kontrol. Solusi bagi saya adalah denganshowErrors
keluar dari loop dan cukup menyebutnya sekali sebelum sebelumnyavalidator.resetForm
. Sejauh yang saya tahu, itu berperilaku dengan cara yang persis sama dan jauh lebih cepat.Jika Anda ingin menyembunyikan kesalahan:
Jika Anda menentukan
errorClass
, panggil kelas itu untuk bersembunyierror
(default) yang saya gunakan di atas.sumber
$(".has-error").removeClass("has-error");
Jika sebelumnya Anda tidak menyimpan validator secara terpisah saat melampirkannya ke formulir, Anda juga bisa langsung memohon
karena
.validate()
akan mengembalikan validator yang sama dengan yang Anda lampirkan sebelumnya (jika Anda melakukannya).sumber
Jika Anda ingin melakukannya tanpa menggunakan variabel yang terpisah, maka
sumber
Sayangnya,
validator.resetForm()
TIDAK berfungsi, dalam banyak kasus.Saya memiliki kasus di mana, jika seseorang mengklik "Kirim" pada formulir dengan nilai kosong, itu harus mengabaikan "Kirim." Tidak ada kesalahan Itu cukup mudah. Jika seseorang memasukkan sebagian nilai, dan klik "Kirim," itu akan menandai beberapa bidang dengan kesalahan. Namun, jika mereka menghapus nilai-nilai itu dan menekan "Kirim" lagi, itu akan menghapus kesalahan. Dalam hal ini, untuk beberapa alasan, tidak ada elemen dalam array "currentElements" di dalam validator, jadi mengeksekusi
.resetForm()
sama sekali tidak melakukan apa pun.Ada bug yang diposting di ini.
Sampai saat mereka memperbaikinya, Anda harus menggunakan jawaban Nick Craver, BUKAN jawaban yang diterima Parrot.
sumber
Kamu bisa memakai:
sumber
Saya pikir kita hanya perlu memasukkan input untuk membersihkan semuanya
sumber
Jika Anda hanya ingin menghapus label validasi, Anda dapat menggunakan kode dari jquery.validate.js resetForm ()
sumber
Bagi mereka yang menggunakan kode Bootstrap 3 di bawah ini akan membersihkan seluruh formulir: pesan, ikon dan warna ...
sumber
Saya diuji dengan:
Ini akan baik-baik saja, ketika Anda perlu memvalidasi lagi.
sumber
Ini akan menghancurkan semua kesalahan validasi
sumber
Dalam kasus saya membantu dengan pendekatan:
sumber
Jika Anda ingin menyembunyikan validasi di sisi klien yang bukan bagian dari formulir kirim, Anda dapat menggunakan kode berikut:
sumber
Mencoba setiap jawaban. Satu-satunya hal yang berhasil bagi saya adalah:
Menggunakan:
sumber
Tidak ada solusi lain yang bekerja untuk saya.
resetForm()
secara jelas didokumentasikan untuk mengatur ulang formulir yang sebenarnya, misalnya menghapus data dari formulir, yang bukan yang saya inginkan. Kebetulan kadang-kadang tidak melakukan itu, tetapi hanya menghapus kesalahan. Apa yang akhirnya berhasil bagi saya adalah ini:sumber
Coba gunakan ini untuk menghapus validasi pada klik pada batal
sumber
Coba gunakan:
pada tombol Clear.
sumber
Untuk menghapus ringkasan validasi, Anda dapat menulis ini
$('div#errorMessage').remove();
Namun, begitu Anda menghapus, sekali lagi jika validasi gagal, tidak akan menampilkan ringkasan validasi ini karena Anda menghapusnya. Alih-alih gunakan sembunyikan dan tampilkan menggunakan kode di bawah ini
sumber
Tidak ada solusi di atas yang berfungsi untuk saya. Saya kecewa membuang-buang waktu saya pada mereka. Namun ada solusi yang mudah.
Solusi dicapai dengan membandingkan tanda HTML untuk negara yang valid dan HTML untuk negara yang salah.
Tidak ada kesalahan akan menghasilkan:
ketika kesalahan terjadi div ini diisi dengan kesalahan dan kelas diubah ke validasi-ringkasan-kesalahan:
Solusinya sangat sederhana. Kosongkan HTML dari div yang berisi kesalahan dan kemudian ubah kelas kembali ke status yang valid.
Selamat coding.
sumber
Jika Anda ingin mengatur ulang
numberOfInvalids()
juga maka tambahkanresetForm
fungsi baris berikut dalamjquery.validate.js
nomor baris file: 415.sumber
saya baru saja melakukannya
$('.input-validation-error').removeClass('input-validation-error');
untuk menghapus batas merah pada bidang kesalahan input.
sumber
$(FORM_ID).validate().resetForm();
masih tidak berfungsi seperti yang diharapkan.Saya mengisi formulir dengan
resetForm()
. Ini berfungsi dalam semua kasus kecuali satu !!Ketika saya memuat formulir apa pun melalui Ajax dan menerapkan validasi formulir setelah memuat dinamis saya
HTML
, kemudian setelah ketika saya mencoba untuk mengatur ulang formulir denganresetForm()
dan gagal, dan itu juga menghapus semua validasi yang saya terapkan pada elemen formulir.Jadi mohon jangan gunakan ini untuk formulir yang dimuat Ajax ATAU validasi yang diinisialisasi secara manual.
PS Anda harus menggunakan jawaban Nick Craver untuk skenario seperti yang saya jelaskan.
sumber
validator.resetForm()
metode menghapus teks kesalahan. Tetapi jika Anda ingin menghapus batas RED dari bidang Anda harus menghapus kelashas-error
sumber
Berfungsi menggunakan pendekatan Travis J , JLewkovich dan Nick Craver ...
sumber
Tulis kode sendiri karena semua orang menggunakan nama kelas yang berbeda. Saya mengatur ulang validasi jQuery dengan kode ini.
sumber