Я не думаю, что это дает какой-то другой элемент фокусировки. Кажется, он просто полностью отвлекается (на самом деле, не в IE, см. Мое редактирование). Я подключил jsfiddle пример так:
HTML
<div id="test">
<input id="test2" />
<input id="test3" />
<input id="test4" />
</div>
JavaScript
$(function() {
$('*').focus(function() {
alert(this.id);
});
$('input').keypress(function(evt) {
if (evt.which == '13') {
$(this).blur();
evt.preventDefault();
}
});
});
По сути, он предупреждает, когда любой элемент получает фокус, и когда вы нажимаете ввод в любом из полей ввода, он вызывает .blur()
. В Opera ни один элемент не получает фокус, когда это происходит. В Firefox окно предупреждения отвлекает фокус от элемента, поэтому вам нужно использовать console.log()
вместо alert()
, но в противном случае оно действует точно так же.
Редактировать
Я проверил это в IE, и кажется, что фокус изменен на элемент тела. Если у вас есть alert(this);
вместо alert(this.id);
, это говорит о том, что элемент body получает фокус, когда входные данные теряют его.