Autor | Zpráva | ||
---|---|---|---|
preca1 Profil |
Zdravim,
mam dva radio inputy spojený přes name , přidám jim posluchače události na událost change . Proč se událost při označení jednoho z nich vyvolá právě jen na něm? Očekával bych, že se událost vyvolá na obou s příznakem, jak byl input změněn.
W3C moc nepomohlo. Napadly mě ještě události focus a blur , ale ty se dle mých testů (radio1.addEventListener('focus', logEvent, false); ) vůbec nekonaj.
Sou moje očekávání hloupá? Je to bug? Vlastnost? Testováno v poslednim FF a Chromiu. Dík Ukázkovej kód, kdyby jsfiddle nefungovalo. <input id="radio1" type="radio" name="test"> <input id="radio2" type="radio" name="test"> <script> var radio1 = document.getElementById('radio1'), radio2 = document.getElementById('radio2'); addEventListener(radio1, 'change', logEvent); addEventListener(radio2, 'change', logEvent); function logEvent(event) { console.log(event); } function addEventListener(el, eventName, handler) { if (el.addEventListener) { el.addEventListener(eventName, handler, false); } else { el.attachEvent('on' + eventName, handler); } } </script> |
||
pako Profil * |
#2 · Zasláno: 9. 6. 2013, 18:33:59
|
||
_es Profil |
#3 · Zasláno: 10. 6. 2013, 10:27:11
preca1:
„Proč se událost při označení jednoho z nich vyvolá právě jen na něm?“ No veď ale presne tak si to zadal. Ak chceš zachytávať udalosť pre obe spoločne, zachytávaj udalosť na ich spoločnom rodičovskom elemente. Udalosť nastáva len v dôsledku priameho užívateľského zásahu na konkrétnom prvku, nie v dôsledku nepriamej zmeny. Udalosť onchange nie je pre tento element asi veľmi vhodná, lepšie bude použiť udalosť onclick - to bude z hľadiska pochopenia asi aj menej mätúce.
|
||
Časová prodleva: 11 let
|
0