Saya memiliki dua tombol radio dalam bentuk HTML. Kotak dialog muncul ketika salah satu bidang adalah nol. Bagaimana saya dapat memeriksa apakah tombol radio dipilih?
javascript
cupu
sumber
sumber
Jawaban:
Mari kita berpura-pura memiliki HTML seperti ini
Untuk validasi sisi klien, berikut ini beberapa Javascript untuk memeriksa yang dipilih:
Di atas bisa dibuat lebih efisien tergantung pada sifat tepat markup Anda, tetapi itu sudah cukup untuk membantu Anda memulai.
Jika Anda hanya ingin melihat apakah ada tombol radio yang dipilih di mana saja di halaman, PrototypeJS membuatnya sangat mudah.
Berikut adalah fungsi yang akan mengembalikan true jika setidaknya satu tombol radio dipilih di suatu tempat di halaman. Sekali lagi, ini mungkin perlu diubah tergantung pada HTML spesifik Anda.
Untuk validasi sisi server (ingat, Anda tidak bisa bergantung sepenuhnya pada Javascript untuk validasi!) , Itu akan tergantung pada bahasa pilihan Anda, tetapi Anda akan mengecek
gender
nilai string permintaan.sumber
Dengan jQuery , itu akan menjadi sesuatu seperti
Biarkan saya memecahnya menjadi beberapa bagian untuk menutupinya dengan lebih jelas. jQuery memproses sesuatu dari kiri ke kanan.
input
membatasinya untuk memasukkan tag.[name=gender]
batasi pada tag dengan nama gender di dalam grup sebelumnya.:checked
batasi pada kotak centang / tombol radio yang dipilih dalam grup sebelumnya.Jika Anda ingin menghindari ini sama sekali, tandai salah satu tombol radio sebagai dicentang (
checked="checked"
) dalam kode HTML, yang akan menjamin bahwa satu tombol radio selalu dipilih.sumber
Cara JavaScript vanilla
sumber
name
.Hanya mencoba untuk memperbaiki solusi Russ Cam dengan beberapa gula pemilih CSS yang dilemparkan dengan JavaScript vanilla.
Tidak perlu jQuery di sini, querySelectorAll cukup didukung secara luas sekarang.
Sunting: memperbaiki bug dengan pemilih css, saya telah menyertakan tanda kutip, meskipun Anda dapat menghilangkannya, dalam beberapa kasus Anda tidak dapat melakukannya sehingga lebih baik meninggalkannya.
sumber
a[href^="http://"]
) mereka akan diperlukan, dan konsistensi lebih dapat dipertahankan. Selain itu, ini memungkinkan deklarasi atribut cocok dengan HTML yang sesuai.Kode HTML
Kode Javascript:
sumber
Anda dapat menggunakan skrip sederhana ini. Anda mungkin memiliki beberapa tombol radio dengan nama dan nilai yang sama.
sumber
document.forms[0].elements['nameOfRadioList'].value
Skrip di halaman ini membantu saya membuat skrip di bawah ini, yang menurut saya lebih lengkap dan universal. Pada dasarnya itu akan memvalidasi sejumlah tombol radio dalam formulir, yang berarti bahwa itu akan memastikan bahwa opsi radio telah dipilih untuk masing-masing dari kelompok radio yang berbeda dalam formulir. misalnya dalam formulir tes di bawah ini:
Skrip RadioValidator akan memastikan bahwa jawaban telah diberikan untuk 'test1' dan 'test2' sebelum dikirimkan. Anda dapat memiliki banyak grup radio dalam formulir, dan itu akan mengabaikan elemen formulir lainnya. Semua jawaban radio yang hilang akan ditampilkan di dalam sembulan peringatan tunggal. Ini dia, saya harap ini membantu orang. Selamat datang di setiap perbaikan bug atau modifikasi yang membantu :)
sumber
Perhatikan perilaku ini dengan jQuery ketika mendapatkan nilai input radio:
Jadi
$('input[name="myRadio"]').val()
tidak mengembalikan nilai dicentang dari input radio, seperti yang Anda harapkan - itu mengembalikan nilai tombol radio pertama.sumber
Dengan mootools ( http://mootools.net/docs/core/Element/Element )
html:
js:
sumber
ini adalah fungsi utilitas yang saya buat untuk mengatasi masalah ini
sumber
Ini akan berlaku untuk tombol radio yang berbagi nama yang sama, tidak diperlukan JQuery.
Jika kita berbicara tentang kotak centang dan kami ingin daftar dengan kotak centang dicentang berbagi nama:
sumber
sumber
hanya sedikit modifikasi untuk Mark Biek;
KODE HTML
dan kode Javascript untuk memeriksa apakah tombol radio dipilih
sumber
Ada cara yang sangat canggih Anda dapat memvalidasi apakah ada tombol radio yang diperiksa dengan ECMA6 dan metode
.some()
.Html:
Dan javascript:
isAnyRadioButtonChecked
akan adatrue
jika beberapa tombol radio dicentang danfalse
jika tidak ada yang dicentang.sumber
sumber
http://www.somacon.com/p143.php/
sumber
Dengan JQuery, cara lain untuk memeriksa status tombol radio saat ini adalah dengan mendapatkan atribut 'diperiksa'.
Sebagai contoh:
Dalam hal ini Anda dapat memeriksa tombol menggunakan:
sumber
$("#gender_male").attr("checked")
adalah string"checked"
dan bukan boolean.Kode ini akan mengingatkan tombol radio yang dipilih ketika formulir dikirimkan. Ini digunakan jQuery untuk mendapatkan nilai yang dipilih.
sumber
Saya menggunakan operator spread dan beberapa untuk memeriksa setidaknya satu elemen dalam array yang lulus tes.
Saya berbagi untuk siapa perhatian.
sumber
Ini adalah solusi yang dikembangkan untuk tidak meneruskan pengiriman dan mengirim peringatan jika tombol radio tidak dicentang. Tentu saja ini berarti Anda harus menghapusnya sejak awal!
Hanya ingat untuk mengatur id ('radio1', 'radio2' atau apa pun namanya) dalam bentuk untuk masing-masing tombol radio atau skrip tidak akan berfungsi.
sumber
if (!document.getElementById('radio1').checked && !document.getElementById('radio2').checked) { alert(); }
.Sebuah contoh:
sumber
Formulir
Naskah
Biola: http://jsfiddle.net/PNpUS/
sumber
Saya hanya ingin memastikan sesuatu dipilih (menggunakan jQuery):
sumber
Jika Anda ingin vanilla JavaScript, tidak ingin mengacaukan markup Anda dengan menambahkan ID pada setiap tombol radio, dan hanya peduli dengan browser modern , pendekatan fungsional berikut sedikit lebih enak untuk saya daripada for for loop:
Jika tidak ada yang dicentang, maka akan kembali
undefined
(meskipun Anda dapat mengubah baris di atas untuk mengembalikan sesuatu yang lain, misalnya, untukfalse
dikembalikan, Anda dapat mengubah baris yang relevan di atas menjadi:}).pop() || {value:false}).value;
:).Ada juga pendekatan polyfill berwawasan ke depan karena antarmuka RadioNodeList harus membuatnya mudah untuk hanya menggunakan
value
properti pada daftar elemen radio form anak (ditemukan dalam kode di atas sebagaiformElement[radioName]
), tetapi itu memiliki masalah sendiri: Cara polyfill RadioNodeList ?sumber
Ini juga berfungsi, menghindari memanggil id elemen tetapi memanggilnya menggunakan elemen array.
Kode berikut didasarkan pada fakta bahwa array, dinamai sebagai grup radiobuttons, disusun oleh elemen radiobuttons dalam urutan yang sama dengan yang dinyatakan dalam dokumen html:
sumber
HTML:
Skrip JAVAS:
sumber
Berikan tombol radio, nama yang sama tetapi ID berbeda.
sumber