Событие размытия в jQuery фокусирует другой элемент на странице? - PullRequest
2 голосов
/ 06 апреля 2011

Я понимаю, что вызов событий jQuery $(selector).blur(); вызовет trigger и запустит обработчики событий размытия.

Дает ли это какой-либо другой элемент на странице, например, документ, тело, фокус?

NB. Хотя это кажется довольно простым, я не нашел подробностей об API jQuery, SO или Google.

1 Ответ

1 голос
/ 06 апреля 2011

Я не думаю, что это дает какой-то другой элемент фокусировки. Кажется, он просто полностью отвлекается (на самом деле, не в 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 получает фокус, когда входные данные теряют его.

...