Używam jQuery do ukrywania i pokazywania elementów, gdy grupa przycisków opcji zostanie zmieniona / kliknięta. Działa dobrze w przeglądarkach takich jak Firefox, ale w IE 6 i 7 akcja ma miejsce tylko wtedy, gdy użytkownik kliknie gdzie indziej na stronie.
Mówiąc dokładniej, po załadowaniu strony wszystko wygląda dobrze. W przeglądarce Firefox, jeśli klikniesz przycisk opcji, jeden wiersz tabeli zostanie ukryty, a drugi zostanie natychmiast wyświetlony. Jednak w IE 6 i 7 klikasz przycisk opcji i nic się nie stanie, dopóki nie klikniesz gdzieś na stronie. Dopiero wtedy IE przerysowuje stronę, ukrywając i pokazując odpowiednie elementy.
Oto jQuery, którego używam:
$(document).ready(function () {
$(".hiddenOnLoad").hide();
$("#viewByOrg").change(function () {
$(".visibleOnLoad").show();
$(".hiddenOnLoad").hide();
});
$("#viewByProduct").change(function () {
$(".visibleOnLoad").hide();
$(".hiddenOnLoad").show();
});
});
Oto część XHTML, na którą wpływa. Cała strona jest weryfikowana jako 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>
Jeśli ktoś ma jakieś pomysły, dlaczego tak się dzieje i jak to naprawić, byłby bardzo wdzięczny!