Saya menggunakan jQuery untuk menyembunyikan dan menampilkan elemen ketika grup tombol radio diubah / diklik. Ini berfungsi dengan baik di browser seperti Firefox, tetapi di IE 6 dan 7, tindakan hanya terjadi ketika pengguna kemudian mengklik di tempat lain di halaman.
Singkatnya, ketika Anda memuat halaman, semuanya terlihat baik-baik saja. Di Firefox, jika Anda mengklik tombol radio, satu baris tabel disembunyikan dan yang lainnya langsung ditampilkan. Namun, di IE 6 dan 7, Anda mengklik tombol radio dan tidak ada yang akan terjadi sampai Anda mengklik suatu tempat di halaman. Baru kemudian IE menggambar ulang halaman, menyembunyikan dan menampilkan elemen yang relevan.
Inilah jQuery yang saya gunakan:
$(document).ready(function () {
$(".hiddenOnLoad").hide();
$("#viewByOrg").change(function () {
$(".visibleOnLoad").show();
$(".hiddenOnLoad").hide();
});
$("#viewByProduct").change(function () {
$(".visibleOnLoad").hide();
$(".hiddenOnLoad").show();
});
});
Inilah bagian dari XHTML yang mempengaruhi. Seluruh halaman divalidasi sebagai XHTML 1.0 Strict.
<tr>
<td>View by:</td>
<td>
<p>
<input type="radio" name="viewBy" id="viewByOrg" value="organisation"
checked="checked" />Organisation</p>
<p>
<input type="radio" name="viewBy" id="viewByProduct" value="product" />Product</p>
</td>
</tr>
<tr class="visibleOnLoad">
<td>Organisation:</td>
<td>
<select name="organisation" id="organisation" multiple="multiple" size="10">
<option value="1">Option 1</option>
<option value="2">Option 2</option>
</select>
</td>
</tr>
<tr class="hiddenOnLoad">
<td>Product:</td>
<td>
<select name="product" id="product" multiple="multiple" size="10">
<option value="1">Option 1</option>
<option value="2">Option 2</option>
</select>
</td>
</tr>
Jika ada yang tahu mengapa ini terjadi dan bagaimana cara memperbaikinya, mereka akan sangat dihargai!
sumber
click
berbeda darichange
dalam eventhandler-nya juga akan dipanggil ketika mengklik opsi yang sudah dipilih sedangkanchange
tidak. Jawaban ini memiliki contoh cara menggunakan jQuery.data
untuk membandingkan nilai lama dan baru.Masalah dengan menggunakan
click
acara bukannyachange
Anda mendapatkan acara jika kotak radio yang sama dipilih (yaitu belum benar-benar berubah). Ini dapat disaring jika Anda memeriksa bahwa nilai baru berbeda dari yang lama. Saya menemukan ini agak mengganggu.Jika Anda menggunakan
change
acara tersebut, Anda mungkin memperhatikan bahwa itu akan mengenali perubahan setelah Anda mengklik elemen lain di IE. Jika Anda meneleponblur()
diclick
acara, itu akan menyebabkanchange
acara untuk api (hanya jika kotak radio benar-benar memiliki berubah).Begini cara saya melakukannya:
Sekarang Anda dapat menggunakan acara perubahan seperti biasa.
Sunting: Menambahkan panggilan untuk fokus () untuk mencegah masalah aksesibilitas (lihat komentar Bobby di bawah).
sumber
Sudahkah Anda mencoba acara pertukaran properti IE? Saya tidak tahu apakah itu membuat perbedaan tetapi mungkin patut dicoba. IE tidak memicu peristiwa perubahan ketika nilai diperbarui melalui kode JS tapi mungkin pertukaran properti akan bekerja dalam hal ini.
sumber
Ini juga harus bekerja:
Terima kasih Pier. Ini sangat membantu.
sumber
click
denganclick keyup keypress
untuk menambahkan dukungan keyboard.Di IE Anda harus menggunakan acara klik, di browser lain onchange. Fungsi Anda bisa menjadi
sumber
click
denganclick keyup keypress
untuk menambahkan dukungan keyboard.tambahkan plugin ini
kemudian
sumber
Saya memiliki masalah yang sama dengan teks input.
Aku berubah:
untuk
dan semuanya bekerja dengan baik untuk saya!
sumber
Ini adalah cara sederhana untuk memberi tahu IE agar memecat acara perubahan ketika elemen diklik:
Anda bisa memperluas ini ke sesuatu yang lebih umum untuk bekerja dengan lebih banyak elemen bentuk:
sumber
Saya cukup yakin ini adalah masalah yang diketahui dengan IE. Menambahkan pawang untuk
onclick
acara tersebut akan memperbaiki masalah:sumber
Di IE, paksa radio dan kotak centang untuk memicu acara "perubahan":
sumber
pada jquery 1.6 ini tidak lagi menjadi masalah .. meskipun tidak pasti kapan diperbaiki .. Syukurlah untuk itu
sumber
Jika Anda mengubah versi jQuery Anda ke 1.5.1, Anda tidak perlu menyesuaikan kode Anda. Kemudian IE9 akan mendengarkan dengan sempurna untuk:
http://code.jquery.com/jquery-1.5.1.min.js
sumber
trik dengan klik berfungsi ... tetapi jika Anda ingin mendapatkan kondisi radio atau kotak centang yang benar, Anda dapat menggunakan ini:
sumber
saya menggunakan klik bukannya perubahan membuat perilaku yaitu berbeda. Saya lebih suka meniru perubahan perilaku acara menggunakan timer (setTimout).
sesuatu seperti (peringatan - kode notepad):
sumber
coba ini, ini bekerja untuk saya
sumber
Ini dapat membantu seseorang: Alih-alih memulai dengan id formulir, targetkan id pilih dan kirimkan formulir pada perubahan, seperti ini:
dan jQuery:
(Jelas, tombol kirim opsional, jika javascript dinonaktifkan)
sumber
Coba yang berikut ini:
sumber
Hindari menggunakan .focus () atau .select () sebelum .change () fungsi jquery untuk IE, maka itu berfungsi dengan baik, saya menggunakannya di situs saya.
Terima kasih
sumber
sumber
Silakan coba masing - masing alih-alih ganti / klik , yang berfungsi dengan baik bahkan pertama kali di IE dan juga peramban lainnya
Tidak Bekerja pertama kali
Bekerja dengan baik bahkan untuk pertama kalinya
sumber