sono costretto a lavorare con IE8 (8.0.7601.17514) e ho questo semplice pagina:onchange sul pulsante radio non funziona correttamente in 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>
Quello che mi aspetto è che, come si seleziona il secondo pulsante di opzione , cliccando sul primo si alza immediatamente un avviso. Funziona bene in FF.
In realtà, quando faccio clic sulla prima radio, non succede nulla. Quindi, quando l'elemento è sfocato (ad esempio, clicco da qualche altra parte, l'altra radio, qualche link nella pagina, ecc.), POI l'avviso è alzato.
Esiste una soluzione alternativa?
EDIT:
apparentemente questo comportamento è esattamente secondo W3C spec
cambiamento
L'evento cambiamento si verifica quando un controllo perde il focus e il suo valore è stato modificato da quando si è messo a fuoco. Questo evento è valido per INPUT, SELECT e TEXTAREA. elemento.
(grazie a @ mu-is-too-short).
La soluzione a questo è quello di aggiungere un onclick sfocatura + attenzione:
function radioClick()
{
this.blur();
this.focus();
}
<input type="radio" name="rad" value="1" onclick="radioClick" onchange="alert(1);"/>
funzionante per me in IE8 - http://jsfiddle.net/uMD9h/ – Pranav
@Pranav no, ho provato il link u inviato in ie8 e non funzionerà –
strano ... funziona perfettamente per me in IE8 con finestra XP. – Pranav