我被迫使用 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>
我期望的是,当第二个单选按钮被选中时,单击第一个单选按钮将立即引发警报。这在 FF 中运行良好。
实际发生的是,当我单击第一个收音机时,什么也没有发生。然后,当元素模糊时(例如,我单击其他地方,另一个收音机,页面中的某些链接等),然后发出警报。
有解决方法吗?
编辑:
显然这种行为完全符合W3C 规范
改变
当控件失去输入焦点并且其值在获得焦点后已被修改时,会发生更改事件。此事件对 INPUT、SELECT 和 TEXTAREA 有效。元素。
(感谢@mu-is-too-short)。
解决方法是添加一个 onclick blur+focus:
function radioClick()
{
this.blur();
this.focus();
}
<input type="radio" name="rad" value="1" onclick="radioClick" onchange="alert(1);"/>