В IE8 он не работает корректно
Я вынужден работать с IE8 (8.0.7601.17514), и у меня есть эта простая страница:
<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>
Я ожидаю, что, когда выбрана вторая радиокнопка, нажатие на первую немедленно вызовет оповещение. Это отлично работает в FF.
На самом деле происходит то, что когда я нажимаю на первое радио, ничего не происходит. Затем, когда элемент размыт (например, я щелкаю где-то еще, другое радио, какая-то ссылка на странице и т. Д.), ТОГДА появляется предупреждение.
Есть ли обходной путь к этому?
EDIT:
по-видимому, это поведение в точности соответствуетW3C спецификация
change
The change event occurs when a control loses the input focus and its value has been modified since gaining focus. This event is valid for INPUT, SELECT, and TEXTAREA. element.
(спасибо @ mu-is-too-short).
Обойти это можно, добавив размытие по клику + фокус:
<code>function radioClick() { this.blur(); this.focus(); } <input type="radio" name="rad" value="1" onclick="radioClick" onchange="alert(1);"/> </code>