Saat menggunakan browser yang lebih baru yang mendukung HTML5 (FireFox 4 misalnya);
dan bidang formulir memiliki atribut required='required'
;
dan bidang formulir kosong / kosong;
dan tombol kirim diklik;
browser mendeteksi bahwa bidang "wajib" kosong dan tidak mengirimkan formulir;
alih-alih peramban menampilkan petunjuk yang meminta pengguna mengetik teks ke dalam bidang.
Sekarang, alih-alih bidang teks tunggal, saya memiliki sekelompok kotak centang , di mana setidaknya satu harus diperiksa / dipilih oleh pengguna.
Bagaimana saya bisa menggunakan required
atribut HTML5 pada grup kotak centang ini? (Karena hanya satu dari kotak centang yang perlu diperiksa, saya tidak dapat menempatkan required
atribut pada setiap kotak centang)
ps. Saya menggunakan simple_form , jika itu penting.
MEMPERBARUI
Apakah atribut HTML 5multiple
dapat membantu di sini? Adakah yang pernah menggunakannya sebelum melakukan sesuatu yang mirip dengan pertanyaan saya?
MEMPERBARUI
Ini muncul bahwa fitur ini tidak didukung oleh HTML5 spesifikasi: MASALAH-111: Apa masukan @ diperlukan rata-rata untuk @type = kotak centang.?
(Status masalah: Masalah telah ditandai ditutup tanpa prasangka. ) Dan inilah penjelasannya .
PEMBARUAN 2
Ini adalah pertanyaan lama, tetapi ingin mengklarifikasi bahwa maksud asli dari pertanyaan itu adalah untuk dapat melakukan hal di atas tanpa menggunakan Javascript - yaitu menggunakan cara HTML5 untuk melakukannya. Dalam retrospeksi, saya seharusnya membuat "tanpa Javascript" lebih jelas.
sumber
Jawaban:
Sayangnya HTML5 tidak menyediakan cara yang tidak biasa untuk melakukan itu.
Namun, menggunakan jQuery, Anda dapat dengan mudah mengontrol jika grup kotak centang memiliki setidaknya satu elemen yang diperiksa.
Pertimbangkan cuplikan DOM berikut:
Anda dapat menggunakan ungkapan ini:
yang kembali
true
jika setidaknya satu elemen dicentang. Berdasarkan itu, Anda dapat menerapkan pemeriksaan validasi Anda.sumber
Ini trik sederhana. Ini adalah kode jQuery yang dapat mengeksploitasi validasi html5 dengan mengubah
required
properti jika ada yang diperiksa. Berikut ini adalah kode html Anda (pastikan Anda menambahkan yang diperlukan untuk semua elemen dalam grup.)Berikut ini adalah skrip jQuery, yang menonaktifkan pemeriksaan validasi lebih lanjut jika ada yang dipilih. Pilih menggunakan elemen nama.
Gotcha kecil di sini: Karena Anda menggunakan validasi html5, pastikan Anda menjalankan ini sebelum divalidasi yaitu sebelum mengirimkan formulir.
sumber
Saya kira tidak ada cara HTML5 standar untuk melakukan hal ini, tetapi jika Anda tidak keberatan menggunakan perpustakaan jQuery, saya sudah bisa mencapai "kelompok checkbox" validasi menggunakan webshims ' ' kelompok-diperlukan fitur validasi':
The docs untuk kelompok-diperlukan katakanlah:
Dan inilah contoh bagaimana Anda akan menggunakannya:
Saya kebanyakan menggunakan webshims untuk polyfill fitur HTML5, tetapi juga memiliki beberapa ekstensi opsional yang hebat seperti ini.
Bahkan memungkinkan Anda untuk menulis aturan validitas khusus Anda sendiri. Misalnya, saya perlu membuat grup kotak centang yang tidak didasarkan pada nama input, jadi saya menulis aturan validitas saya sendiri untuk itu ...
sumber
HTML5 tidak secara langsung mendukung yang membutuhkan hanya satu / setidaknya satu kotak centang diperiksa dalam grup kotak centang. Ini solusi saya menggunakan Javascript:
HTML
JAVASCRIPT
Javascript akan memastikan setidaknya satu kotak centang dicentang, lalu menghapus semua grup kotak centang. Jika satu kotak centang yang dicentang menjadi tidak dicentang, maka akan memerlukan semua kotak centang lagi!
sumber
Saya memiliki masalah yang sama dan solusi saya adalah ini:
HTML:
JS:
https://jsfiddle.net/oywLo5z4/
sumber
Terinspirasi oleh jawaban dari @thegauraw dan @Brian Woodward, inilah sedikit yang saya tarik bersama untuk pengguna JQuery, termasuk pesan kesalahan validasi khusus:
Perhatikan bahwa formulir saya memiliki beberapa kotak centang diperiksa secara default.
Mungkin beberapa dari Anda penyihir JavaScript / JQuery bisa memperketat itu lebih banyak?
sumber
kita dapat melakukan ini dengan mudah dengan HTML5 juga, hanya perlu menambahkan beberapa kode jquery
Demo
HTML
Jquery
sumber
Saya menambahkan radio yang tidak terlihat ke sekelompok kotak centang. Ketika setidaknya satu opsi dicentang, radio juga diatur untuk memeriksa. Ketika semua opsi dibatalkan, radio juga diatur untuk membatalkan. Oleh karena itu, formulir menggunakan prompt radio "Silakan periksa setidaknya satu opsi"
display: none
karena radio tidak dapat fokus.HTML
Javascript
CSS
https://jsfiddle.net/codus/q6ngpjyc/9/
sumber
radio
'sopacity
ke 0, dan setopacity
ke 1 ketika disampaikan, sehingga kita dapat mengontrol apakah muncul garis merah atau tidak.visibility: hidden
ataudisplay: none
hanya untuk menghindari kegunaan sedikit kotor. Karena pembaca layar dan alat aksesibilitas lainnya mungkin akan menemukan tombol radio tersembunyi.Hai, cukup gunakan kotak teks tambahan untuk grup kotak centang. Ketika mengklik pada kotak centang apa pun masukkan nilai ke kotak teks itu. Pastikan kotak teks itu diperlukan dan hanya dibaca.
sumber
Saya menyadari ada banyak solusi di sini, tetapi saya tidak menemukan satu pun dari mereka yang memenuhi setiap persyaratan yang saya miliki:
name
untuk mengirimkan masalah Github melalui API mereka, dan menggunakan namalabel[]
untuk menetapkan label di banyak bidang formulir (dua daftar kotak centang dan beberapa pilihan dan kotak teks) - diberikan saya bisa mencapai ini tanpa mereka berbagi nama yang sama, tetapi saya memutuskan untuk mencobanya, dan itu berhasil.Satu-satunya persyaratan untuk ini adalah jQuery. Anda dapat menggabungkan ini dengan solusi hebat @ ewall untuk menambahkan pesan kesalahan validasi khusus.
sumber
Berikut ini adalah trik sederhana menggunakan Jquery !!
HTML
JQuery
Itu saja .. ini berfungsi karena jika tidak ada kotak centang yang dipilih, tidak ada yang berkaitan dengan grup kotak centang (termasuk namanya) yang diposting ke server
sumber
Mencoba:
atau
Lebih spesifik:
Saat Anda membaca data dari larik kotak centang, pastikan larik memiliki:
Pada kasus ini:
sumber