Sekitar sebulan yang lalu pertanyaan Mitt tidak dijawab. Sedihnya, saya mengalami situasi yang sama sekarang.
http://api.jquery.com/change/#comment-133939395
Inilah situasinya: Saya menggunakan jQuery untuk menangkap perubahan di tombol radio. Ketika tombol radio dipilih, saya mengaktifkan kotak edit. Ketika tombol radio tidak dipilih, saya ingin kotak edit dinonaktifkan.
Pengaktifan bekerja. Ketika saya memilih tombol radio yang berbeda dalam grup, change
acara tersebut tidak diaktifkan. Adakah yang tahu bagaimana cara memperbaikinya?
<input type="radio" id="r1" name="someRadioGroup"/>
<script type="text/javascript">
$("#r1").change(function () {
if ($("#r1").attr("checked")) {
$('#r1edit:input').removeAttr('disabled');
}
else {
$('#r1edit:input').attr('disabled', true);
}
});
</script>
javascript
jquery
html
radio-button
antwarpes
sumber
sumber
id=r1
Jawaban:
Sepertinya
change()
fungsi ini hanya dipanggil ketika Anda memeriksa tombol radio, bukan ketika Anda tidak mencentangnya. Solusi yang saya gunakan adalah untuk mengikat acara perubahan ke setiap tombol radio:Atau Anda bisa memberikan semua tombol radio dengan nama yang sama:
Berikut ini adalah contoh jsfiddle yang berfungsi (diperbarui dari komentar Chris Porter.)
Per komentar @ Ray, Anda harus menghindari menggunakan nama dengan
.
di dalamnya. Nama-nama itu berfungsi di jQuery 1.7.2 tetapi tidak di versi lain ( contoh jsfiddle. ).sumber
bagian jquery
di sini adalah DEMO
sumber
.attr('checked')
menjadi.prop('checked')
.Anda dapat mengikat ke semua tombol radio sekaligus dengan nama:
Contoh kerja di sini: http://jsfiddle.net/Ey4fa/
sumber
Ini biasanya bekerja untuk saya:
if ($("#r1").is(":checked")) {}
sumber
Masalah saya serupa dan ini bekerja untuk saya:
sumber
Katakanlah tombol-tombol radio berada di dalam
div
yang memiliki idradioButtons
dan bahwa tombol radio memiliki nama yang sama (misalnyacommonName
) maka:sumber
The
change
event tidak menembaki deselection adalah perilaku yang diinginkan. Anda harus menjalankan pemilih di seluruh grup radio daripada hanya satu tombol radio. Dan grup radio Anda harus memiliki nama yang sama (dengan nilai yang berbeda)Pertimbangkan kode berikut:
Saya memiliki kasus penggunaan yang sama seperti milik Anda yaitu untuk menunjukkan kotak input ketika tombol radio tertentu dipilih. Jika acara ini dipecat saat seleksi, saya akan mendapatkan 2 acara setiap kali.
sumber
Masalah yang sama di sini, ini bekerja dengan baik:
sumber
Dengan Ajax, bagi saya bekerja:
Html:
Javascript:
Dan php:
sumber