onchange no radiobutton não está funcionando corretamente no IE8
Sou forçado a trabalhar com o IE8 (8.0.7601.17514) e tenho esta página simples:
<code><!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> </code>
O que eu espero é que, quando o segundo botão de rádio for selecionado, clicar no primeiro botão irá imediatamente ativar um alerta. Isso funciona bem no FF.
O que realmente acontece é que quando eu clico no primeiro rádio, nada acontece. Então, quando o elemento estiver desfocado (por exemplo, eu clico em outro lugar, o outro rádio, algum link na página, etc.), ENTÃO o alerta é gerado.
Existe uma solução para isso?
EDITAR:
aparentemente este comportamento é exatamente de acordo comEspecificação W3C
mudança
O evento de alteração ocorre quando um controle perde o foco de entrada e seu valor é modificado desde o foco. Este evento é válido para INPUT, SELECT e TEXTAREA. elemento.
(graças a @ mu-is-too-short).
A solução para isso é adicionar um foco onclick blur +:
<code>function radioClick() { this.blur(); this.focus(); } <input type="radio" name="rad" value="1" onclick="radioClick" onchange="alert(1);"/> </code>