Tôi đang sử dụng jQuery để ẩn và hiển thị các thành phần khi nhóm nút radio bị thay đổi / nhấp. Nó hoạt động tốt trong các trình duyệt như Firefox, nhưng trong IE 6 và 7, hành động chỉ xảy ra khi người dùng sau đó nhấp vào một nơi khác trên trang.
Để giải thích, khi bạn tải trang, mọi thứ đều ổn. Trong Firefox, nếu bạn nhấp vào nút radio, một hàng trong bảng sẽ bị ẩn và một hàng khác được hiển thị ngay lập tức. Tuy nhiên, trong IE 6 và 7, bạn nhấp vào nút radio và sẽ không có gì xảy ra cho đến khi bạn nhấp vào đâu đó trên trang. Chỉ sau đó IE mới vẽ lại trang, ẩn và hiển thị các yếu tố liên quan.
Đây là jQuery tôi đang sử dụng:
$(document).ready(function () {
$(".hiddenOnLoad").hide();
$("#viewByOrg").change(function () {
$(".visibleOnLoad").show();
$(".hiddenOnLoad").hide();
});
$("#viewByProduct").change(function () {
$(".visibleOnLoad").hide();
$(".hiddenOnLoad").show();
});
});
Đây là một phần của XHTML mà nó ảnh hưởng. Toàn bộ trang xác nhận là 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>
Nếu bất cứ ai có bất kỳ ý tưởng tại sao điều này xảy ra và làm thế nào để khắc phục nó, họ sẽ được đánh giá rất cao!