私はIE8(8.0.7601.17514)で作業することを余儀なくされており、この簡単なページがあります:
<!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>
私が期待しているのは、2 番目のラジオ ボタンが選択されているので、最初のラジオ ボタンをクリックするとすぐにアラートが発生することです。これはFFでうまく機能します。
実際には、最初のラジオをクリックしても何も起こりません。次に、要素がぼやけている場合 (たとえば、別の場所、他のラジオ、ページ内のリンクなどをクリックした場合)、アラートが発生します。
これに対する回避策はありますか?
編集:
明らかに、この動作はW3C 仕様に正確に従っています
変化する
change イベントは、コントロールが入力フォーカスを失い、フォーカスを取得してからその値が変更されたときに発生します。このイベントは、INPUT、SELECT、および TEXTAREA に対して有効です。エレメント。
(@mu-is-too-short に感謝)。
これを回避するには、onclick ブラー + フォーカスを追加します。
function radioClick()
{
this.blur();
this.focus();
}
<input type="radio" name="rad" value="1" onclick="radioClick" onchange="alert(1);"/>