Saya memiliki formulir ini di aplikasi saya dan saya akan mengirimkannya melalui AJAX, tetapi saya ingin menggunakan HTML5 untuk validasi sisi klien. Jadi saya ingin dapat memaksa validasi formulir, mungkin melalui jQuery.
Saya ingin memicu validasi tanpa mengirimkan formulir. Apa itu mungkin?
jquery
html
validation
razenha
sumber
sumber
Jawaban:
Untuk memeriksa apakah bidang tertentu valid, gunakan:
Untuk memeriksa apakah formulir itu valid, gunakan:
Jika Anda ingin menampilkan pesan kesalahan asli yang dimiliki beberapa browser (seperti Chrome), sayangnya satu-satunya cara untuk melakukannya adalah dengan mengirimkan formulir, seperti ini:
Semoga ini membantu. Ingatlah bahwa validasi HTML5 tidak didukung di semua browser.
sumber
$myForm.submit()
dengan$myForm.find(':submit').click()
$('<input type="submit">').hide().appendTo($myForm).click().remove();
checkValidity()
, tetapi juga memiliki kesalahan yang berbahaya.checkValidity()
adalah apa yang memicu pesan kesalahan browser asli, bukan mengklik tombol kirim. Jika Anda memiliki pendengar acara yang mendengarkan mengklik tombol kirim, Anda akan memicunya ketika Anda melakukan `$ myForm.find (': submit'). Click ()`, yang akan memicu dirinya sendiri dan menyebabkan rekursi tak terbatas.Saya menemukan solusi ini bekerja untuk saya. Panggil saja fungsi javascript seperti ini:
action="javascript:myFunction();"
Maka Anda memiliki validasi html5 ... sangat sederhana :-)
sumber
action="javascript:0"
pada<form>
dan terikatclick
acara pada<button>
untukMyFunction()
dan semua bekerja hebat. Saya menjaga semua JS keluar dari HTML.MyFunction
kemudian dapat mengujiform.checkValidity()
untuk melanjutkan.onsubmit()
hampir selalu lebih baik daripada mengikat ke tombolonclick()
, karena ada cara lain untuk mengirimkan formulir. (Khususnya dengan menekanreturn
kunci.)action="javascript:myFunction();"
atauaction="javascript:0"
berfungsi lagi di Firefox terbaru (67). Bekerja di Chrome.dari: validasi formulir html5
sumber
reportValidity
yang hanya didukung oleh Chrome 40,0$("form")[0].reportValidity()
. Saya perlu jika validitas cek gagal.kode di bawah ini berfungsi untuk saya,
sumber
reportValidity()
adalah fungsi terbaik untuk menyorot bidang yang diperlukan.Berikut ini adalah cara yang lebih umum yang sedikit lebih bersih:
Buat formulir Anda seperti ini (bisa berupa bentuk dummy yang tidak melakukan apa-apa):
Ikat semua formulir yang tidak ingin Anda kirim:
Sekarang katakanlah Anda memiliki
<a>
(di dalam<form>
) yang di klik Anda ingin memvalidasi formulir:Beberapa catatan di sini:
checkValidity()
sudah cukup (setidaknya dalam chrome). Jika orang lain dapat menambahkan komentar dengan menguji teori ini di browser lain saya akan memperbarui jawaban ini.<form>
. Ini hanya cara yang bersih dan fleksibel untuk memiliki solusi tujuan umum ..sumber
Mungkin terlambat ke pesta tetapi entah bagaimana saya menemukan pertanyaan ini ketika mencoba untuk menyelesaikan masalah yang sama. Karena tidak ada kode dari halaman ini yang berfungsi untuk saya, sementara itu saya datang dengan solusi yang berfungsi seperti yang ditentukan.
Masalahnya adalah ketika
<form>
DOM Anda mengandung<button>
elemen tunggal , setelah dipecat, itu<button>
akan secara otomatis memasukkan formulir. Jika Anda bermain dengan AJAX, Anda mungkin perlu mencegah tindakan default. Tetapi ada yang menarik: Jika Anda hanya melakukannya, Anda juga akan mencegah validasi HTML5 dasar. Oleh karena itu, panggilan yang baik untuk mencegah default pada tombol itu hanya jika formnya valid. Jika tidak, validasi HTML5 akan melindungi Anda dari pengiriman. jQuerycheckValidity()
akan membantu dengan ini:jQuery:
Kode yang dijelaskan di atas akan memungkinkan Anda untuk menggunakan validasi HTML5 dasar (dengan jenis dan pencocokan pola) TANPA mengirimkan formulir.
sumber
Anda berbicara tentang dua hal berbeda "validasi HTML5" dan validasi formulir HTML menggunakan javascript / jquery.
HTML5 "memiliki" opsi bawaan untuk memvalidasi formulir. Seperti menggunakan atribut "wajib" pada suatu bidang, yang bisa (berdasarkan implementasi browser) gagal pengiriman formulir tanpa menggunakan javascript / jquery.
Dengan javascrip / jquery Anda dapat melakukan sesuatu seperti ini
sumber
triggerHtml5Validation()
fungsi. Kode di atas akan melampirkan ajukan acara ke formulir Anda; pada saat Anda mencegat acara dan memvalidasi formulir. Jika Anda tidak pernah ingin mengirimkan formulir, cukupreturn false;
dan pengiriman tidak akan pernah terjadi.return (valid) ? true : false
===return valid
. :)return valid
tidak mengembalikan false untuk nilai null / undefined. Tapi itu tidak masalah, jawabannya adalah pseudo-code, intinya adalah: gunakan return false untuk tidak mengirimkan formulir ^^sumber
Untuk memeriksa semua bidang formulir yang diperlukan tanpa menggunakan tombol kirim, Anda dapat menggunakan fungsi di bawah ini.
Anda harus menetapkan atribut yang diperlukan untuk kontrol.
sumber
Anda tidak perlu jQuery untuk mencapai ini. Dalam formulir Anda tambahkan:
atau dalam JavaScript:
Dalam
buttonSubmit
fungsi Anda (atau apa pun Anda menyebutnya), Anda dapat mengirimkan formulir menggunakan AJAX.buttonSubmit
hanya akan dipanggil jika formulir Anda divalidasi dalam HTML5.Dalam hal ini membantu siapa pun, inilah
buttonSubmit
fungsi saya :Beberapa formulir saya berisi beberapa tombol kirim, karenanya baris ini
if (submitvalue == e.elements[i].value)
. Saya menetapkan nilaisubmitvalue
menggunakan acara klik.sumber
Saya mengalami situasi yang agak rumit, di mana saya perlu beberapa tombol kirim untuk memproses berbagai hal. Misalnya, Simpan dan Hapus.
Dasarnya adalah itu juga tidak mengganggu, jadi saya tidak bisa menjadikannya tombol biasa. Tetapi juga ingin memanfaatkan validasi HTML5.
Selain itu acara pengiriman ditimpa jika pengguna menekan enter untuk memicu pengiriman default yang diharapkan; dalam contoh ini simpan.
Berikut adalah upaya pemrosesan formulir untuk tetap bekerja dengan / tanpa javascript dan dengan validasi html5, dengan kedua ajukan dan klik acara.
xHTML
JavaScript
Peringatan untuk menggunakan Javascript adalah bahwa onclick default browser harus menyebar ke acara kirim HARUS terjadi untuk menampilkan pesan kesalahan tanpa mendukung setiap browser dalam kode Anda. Kalau tidak, jika acara klik ditimpa dengan event.preventDefault () atau return false, itu tidak akan menyebar ke acara pengiriman browser.
Hal yang perlu diperhatikan adalah bahwa di beberapa browser tidak akan memicu pengiriman formulir ketika pengguna menekan masuk, melainkan akan memicu tombol kirim pertama dalam formulir. Karenanya ada console.log ('form submit') untuk menunjukkan bahwa itu tidak memicu.
sumber
jQuery
secara eksplisit. Ini berbeda karena menangani pemrosesan validasi HTML5 dengan beberapa tombol kirim dan mencegah pengiriman formulir AJAX saat tidak valid. Default kesave
tindakan ketika pengguna menekanenter
tombol pada keyboard. Yang pada saat saya memposting tidak ada jawaban yang diberikan adalah solusi untuk beberapa tombol kirim atau menangkap tombol enter untuk mencegah pengiriman ajax.Anda dapat melakukannya tanpa mengirimkan formulir.
Misalnya, jika tombol kirim formulir dengan id "cari" ada di formulir lain. Anda dapat memanggil acara klik pada tombol kirim itu dan memanggil ev.preventDefault setelah itu. Untuk kasus saya, saya memvalidasi formulir B dari pengajuan Formulir A. Seperti ini
sumber
Cara ini bekerja dengan baik untuk saya:
Tambahkan
onSubmit
atribut di Andaform
, jangan lupa sertakanreturn
dalam nilai.Tentukan fungsinya.
sumber
bukan jawaban terbaik tetapi bekerja untuk saya.
sumber
Saya tahu ini sudah dijawab, tetapi saya punya solusi lain yang mungkin.
Jika menggunakan jquery, Anda bisa melakukan ini.
Pertama buat beberapa ekstensi di jquery sehingga Anda bisa menolaknya sesuai kebutuhan.
Selanjutnya lakukan sesuatu seperti ini di mana Anda ingin menggunakannya.
sumber
sumber
Ini berfungsi dari saya untuk menampilkan pesan kesalahan HTML 5 asli dengan validasi formulir.
Catatan: RegForm adalah
form id
.Referensi
Semoga membantu seseorang.
sumber
Ini adalah cara yang cukup mudah untuk membuat HTML5 melakukan validasi untuk formulir apa pun, sementara masih memiliki kontrol JS modern atas formulir. Satu-satunya peringatan adalah tombol kirim harus di dalam
<form>
.html
js
sumber
Saya pikir pendekatan terbaik
akan menggunakan plugin jQuery Validation yang menggunakan praktik terbaik untuk validasi formulir dan juga memiliki dukungan browser yang baik. Jadi Anda tidak perlu khawatir tentang masalah kompatibilitas browser.
Dan kita dapat menggunakan fungsi validasi jQuery valid () yang memeriksa apakah formulir yang dipilih valid atau apakah semua elemen yang dipilih valid tanpa mengirimkan formulir.
sumber
Menurut pertanyaan, validitas html5 harus dapat divalidasi dengan menggunakan jQuery pada awalnya dan di sebagian besar jawaban ini tidak terjadi dan alasannya adalah sebagai berikut:
saat memvalidasi menggunakan fungsi default bentuk HTML5
kita perlu memahami bahwa jQuery mengembalikan array objek, sambil memilih seperti ini
Oleh karena itu, Anda perlu menentukan indeks pertama untuk membuat fungsi checkValidity () berfungsi
di sini adalah solusi lengkap:
sumber