Kolejna wpadka Opery, czyli Opera jest zła part 2
Po tym jak już raz znalazłem błąd w Operze, który został naprawiony przyszła pora na kolejne starcie. Nie wiem, czy po prostu w Operze jest tyle błędów, czy może ja mam jedynie takie szczęście ciągle na nie wpadać…
W każdym bądź razie do rzeczy: Wszystko ogranicza się do tego, że Opera nie wykonuje akcji onClick() na ukrytych polach formularza.
Przykład jest trochę zakręcony, bo długo myślałem i kombinowałem jak go przedstawić
Całośc powinna działać tak:
- Klikam na któryś <label> i powinno się wybrać od razu właściwe pole radio.
- Zaznaczenie pola radio powinno uruchomić akcję onClick, które wyświetla alert() z wartością zaznaczonego radio.
W Firefoksie działa wszystko prawidłowo - pojawia się jak powinno pole alert. Natomiast w operze nic się nie dzieje. A gdy zlikwiduje się regułkę ukrywającą pola (display:none) - nagle wszystko zaczęło działać.
Znalezienie tego błędu zajęło mi dwa dni - ciekawe ile jeszcze jest takich niespodzianek w Operze… Na szczęście działa chociaż onChange()…
Kod testowy:
<style>
input[type='radio'] {display:none}
</style>
<form id="f" action="#" method="get">
<input type="radio" name="r" id="r1" value="radio1"
onClick="fsubmit()"/><label for="r1">Radio 1</label><br/>
<input type="radio" name="r" id="r2" value="radio2"
onClick="fsubmit()"/><label for="r2">Radio 2</label><br/>
</form>
<script type="text/javascript">
function getCheckedValue(name) {
inputs = document.getElementsByTagName('input');
for(i=0; i<inputs.length; i++) {
if(inputs[i].name==name && inputs[i].checked == true) {
return inputs[i].value;
}
}
return 'none selected';
}
function $(o) {
return document.getElementById(o);
}
function fsubmit() {
alert('Radio value: '+getCheckedValue('r'));
}
</script>
Comments(1)