estoy obligado a trabajar con Internet Explorer 8 (8.0.7601.17514) y tengo esta sencilla página:onchange en botón de radio no funciona correctamente en 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>
Lo que espero es que a medida que se selecciona el segundo botón , al hacer clic en el primero, se generará una Alerta de inmediato. Esto funciona bien en FF.
Lo que realmente sucede es que cuando hago clic en la primera radio, no pasa nada. Luego, cuando el elemento está borroso (por ejemplo, hago clic en otro lugar, la otra radio, algún enlace en la página, etc.), ENTONCES se levanta la alerta.
¿Hay alguna solución a esto?
EDIT:
parecer, este comportamiento es exactamente de acuerdo con W3C spec
cambio
El evento de cambio se produce cuando un control pierde el foco de entrada y su valor se ha modificado desde que ganas el foco Este evento es válido para INPUT, SELECT y TEXTAREA. elemento.
(gracias a @ mu-is-too-short).
La solución a esto es añadir un desenfoque onclick + foco:
function radioClick()
{
this.blur();
this.focus();
}
<input type="radio" name="rad" value="1" onclick="radioClick" onchange="alert(1);"/>
trabajando bien para mí en IE8 - http://jsfiddle.net/uMD9h/ – Pranav
@Pranav no, intenté el enlace que enviaste en ie8 y no funcionará –
extraño ... está funcionando absolutamente bien para mí en IE8 con Windows XP. – Pranav