Saya memiliki beberapa radio di halaman saya, dan saya ingin melakukan sesuatu ketika radio yang dicentang berubah, namun kodenya tidak berfungsi di IE:
$('input:radio').change(...);
Dan setelah googling, orang-orang menyarankan untuk menggunakan klik saja. Tapi itu tidak berhasil.
Ini adalah contoh kode:
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
<script type="text/javascript">
$('document').ready(
function(){
$('input:radio').click(
function(){
alert('changed');
}
);
}
);
</script>
</head>
<body>
<input type="radio" name="testGroup" id="test1" />test1<br/>
<input type="radio" name="testGroup" id="test2" />test2<br/>
<input type="radio" name="testGroup" id="test3" />test3</br>
</body>
</html>
Itu juga tidak bekerja di IE.
Jadi saya ingin tahu apa yang sedang terjadi?
Juga saya takut jika itu akan memicu kembali acara perubahan jika saya mengklik radio yang dicentang?
MEMPERBARUI:
Saya tidak bisa menambahkan komentar, jadi saya balas di sini.
Saya menggunakan IE8 dan tautan yang diberikan Furqan kepada saya juga tidak berfungsi di IE8. Saya tidak tahu kenapa...
jquery
radio-button
hguser
sumber
sumber
Jawaban:
Kode ini berfungsi untuk saya:
$(function(){ $('input:radio').change(function(){ alert('changed'); }); });
http://jsfiddle.net/3q29L/
sumber
$('input[type=radio]')
sebagai gantinya (lihat "catatan tambahan": api.jquery.com/radio-selector )Anda dapat menentukan atribut nama seperti di bawah ini:
$( 'input[name="testGroup"]:radio' ).change(
sumber
Berfungsi untuk saya juga, berikut adalah solusi yang lebih baik ::
demo biola
<form id="myForm"> <input type="radio" name="radioName" value="1" />one<br /> <input type="radio" name="radioName" value="2" />two </form> <script> $('#myForm input[type=radio]').change(function() { alert(this.value); }); </script>
Anda harus memastikan bahwa Anda menginisialisasi di
jquery
atas semua impor dan fungsi javascript lainnya. Karena$
itu sebuahjquery
fungsi. Bahkan$(function(){ <code> });
tidak akan memeriksa
jquery
diinisialisasi atau tidak. Ini akan memastikan bahwa<code>
akan berjalan hanya setelah semua javascript diinisialisasi.sumber
Mencoba
$(document).ready(
dari pada
$('document').ready(
atau Anda dapat menggunakan bentuk singkatan
$(function(){ });
sumber
$( 'input[name="testGroup"]:radio' ).on('change', function(e) { console.log(e.type); return false; });
Sintaks ini sedikit lebih fleksibel untuk menangani acara. Anda tidak hanya dapat mengamati "perubahan", tetapi juga jenis peristiwa lainnya dapat dikontrol di sini juga dengan menggunakan satu pengendali peristiwa. Anda dapat melakukan ini dengan meneruskan daftar kejadian sebagai argumen ke parameter pertama. Lihat jQuery On
Kedua, .change () adalah jalan pintas untuk .on ("change", handler). Lihat disini . Saya lebih suka menggunakan .on () daripada .change karena saya memiliki kontrol lebih besar atas peristiwa tersebut.
Terakhir, saya hanya menunjukkan sintaks alternatif untuk melampirkan acara ke elemen.
sumber