jestem zmuszony do pracy z IE8 (8.0.7601.17514) i mam to proste strony:onchange na radiobutton nie działa poprawnie w IE8
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" >
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
</head>
<body>
<form action=".">
<input type="radio" name="rad" value="1" onchange="alert(1);"/>
<input type="radio" name="rad" value="0" onchange="alert(0);" checked="checked"/>
</form>
<a href="http://google.com">some dummy link</a>
</body>
</html>
Czego oczekuję jest to, że jest wybrany drugi przycisk radiowy kliknięcie pierwszego spowoduje natychmiastowe zgłoszenie alarmu. Działa to dobrze w FF.
To, co się dzieje, to fakt, że po kliknięciu pierwszego radia nic się nie dzieje. Następnie, gdy element jest rozmazany (np. Klikam gdzieś indziej, inne radio, jakiś link na stronie itp.), WTEDY alarm jest podnoszony.
Czy istnieje obejście tego problemu?
EDIT:
widocznie to zachowanie jest dokładnie według W3C spec
zmiany
Zdarzenie Zmiana występuje wtedy, gdy kontrola traci fokus i jego wartość została zmodyfikowana od czasu uzyskania ostrości. To zdarzenie jest ważne dla INPUT, SELECT i TEXTAREA. element.
(dzięki @ mu-is-too-too-short).
Rozwiązaniem tego problemu jest dodanie rozmycie onclick + ostrości:
function radioClick()
{
this.blur();
this.focus();
}
<input type="radio" name="rad" value="1" onclick="radioClick" onchange="alert(1);"/>
działa dobrze dla mnie w IE8 - http://jsfiddle.net/uMD9h/ – Pranav
@Pranav nope, próbował link u wysłana w IE8 i nie będzie działać –
dziwne ... to działa całkowicie w porządku dla mnie w IE8 z oknem XP. – Pranav