.focus () не работает после закрытия DOMWindow () [JQuery] - PullRequest
2 голосов
/ 27 октября 2010

У меня есть серия элементов DIV, которые при нажатии запускают событие открытия DOMWindow.Нет проблем там.

Затем мне пришлось добавить доступность клавиатуры.DOH !!

Я добавил атрибуты tabindex в DIV, что позволяет пользователю переходить с одного DIV на другой, и добавил обработчик нажатия клавиш для работы с клавишей Enter.Никаких проблем там нет.

Проблема, с которой я сталкиваюсь, - это попытка вернуть фокус обратно на тот div, на котором находился пользователь, когда он или она нажали клавишу ввода и открыли окно DOMW (чтобы они могли продолжить вставку вследующий DIV в серии).

Я попытался добавить функцию в настройку «functionCallOnClose» в DOMWindow, но, похоже, это ничего не делает.

Вот фрагмент кода.Это связывает события click и keypress со всеми DIV, которые имеют имя класса «timeEntry»:

$(".timeEntry").live("click keypress", function () {

    // bunch of code here to set up the DOMWindow...

    $.openDOMWindow({

        // bunch of settings here...

        functionCallOnClose: function () {
            // this doesn't work
            // 'DivId' is the object (DIV) that was clicked on
            $(DivId).focus();
        }
    });

});

Кто-нибудь знает, почему я не могу вернуть фокус к исходному DIVпосле того, как события нажатия или нажатия клавиш запускаются и обрабатываются?

Я понимаю, что это довольно непонятный вопрос, поэтому я добавлю его в надежде, что кто-то еще, читающий это, использует JQuery, DOMWindow и обрабатывает щелчоки события нажатия клавиш (или, по крайней мере, знает, как)

: o)

РЕДАКТИРОВАТЬ: После некоторой дальнейшей отладки кажется, что есть проблема с получением JQueryАтрибут tabIndex из тегов DIV.Когда я просматриваю источник моей страницы, я вижу атрибуты:

<div id="someDiv" class="someClass" tabindex="1"> ... </div>

Однако, когда я пытаюсь получить атрибут с помощью jQuery, он не появляется там.

Этот код возвращает «undefined»

var tabindex = $("#someDiv").attr("tabindex");

Однако, если я задаю атрибут с помощью jQuery, я могу обернуться и получить его:

// set the tabindex
$("#someDiv").attr("tabindex", "1");

// now this returns "1"
var tabindex = $("#someDiv").attr("tabindex");

Кто-нибудь знает, почему jQuery не делаетне вернуть атрибут tabindex, когда он установлен в HTML, но он будет после того, как он будет установлен динамически с использованием кода?

Надеюсь, что это имеет смысл ...

1 Ответ

1 голос
/ 19 января 2011

проблема звучит интересно, поэтому я сделал поиск и нашел это: http://api.jquery.com/attr/#comment-92512642

Это может быть ошибка в jquery версии 1.4.3 (работает в 1.4.2 по ссылке).

...