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 *
focus a blur funguju (ff21) - jsfiddle
_es
Profil
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.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0