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:

  1. Klikam na któryś <label> i powinno się wybrać od razu właściwe pole radio.
  2. 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>

1 comment so far

  1. Maksymus007 on

    A ja nie widze bledu – niby dlaczego zmiana pola ma powodowac akcje OnCLick? Jak juz to OnChange. A niewidocznego elementu kliknac sie nie da raczej…


Zostaw odpowiedź