Tôi buộc phải làm việc với IE8 (8.0.7601.17514) và tôi có trang đơn giản này:onchange trên radiobutton không hoạt động chính xác trong 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>
Những gì tôi mong đợi là như nút radio thứ hai được chọn , nhấp vào người đầu tiên sẽ ngay lập tức nâng cao Cảnh báo. Điều này hoạt động tốt trong FF.
Điều thực sự xảy ra là khi tôi nhấp vào đài phát thanh đầu tiên, không có gì xảy ra. Sau đó, khi phần tử bị mờ (ví dụ: tôi nhấp vào một nơi khác, radio khác, một số liên kết trong trang, vv), THEN cảnh báo được nâng lên.
Có cách giải quyết nào cho vấn đề này không?
EDIT:
rõ ràng hành vi này là chính xác theo W3C spec
thay đổi
Các sự kiện thay đổi xảy ra khi một điều khiển mất tập trung đầu vào và giá trị của nó đã được sửa đổi kể từ khi đạt được tiêu điểm. Sự kiện này hợp lệ cho INPUT, SELECT và TEXTAREA. thành phần.
(nhờ @ mu-quá-ngắn).
Cách giải quyết vấn đề này là để thêm một mờ onclick + Trọng tâm:
function radioClick()
{
this.blur();
this.focus();
}
<input type="radio" name="rad" value="1" onclick="radioClick" onchange="alert(1);"/>
làm việc tốt cho tôi trong IE8 - http://jsfiddle.net/uMD9h/ – Pranav
@Pranav nope, thử liên kết u được gửi trong ie8 và nó sẽ không hoạt động –
lạ ... nó đang làm việc hoàn toàn tốt cho tôi trong IE8 với cửa sổ XP. – Pranav