Greybox: не может перемещать фокус на элемент управления, потому что он невидим, не включен или тип, который не принимает фокус

Возможный дубликат:JavaScript: ошибка видимости в Internet Explorer при настройке фокуса на элемент ввода

У меня есть страница, которая загружается в greybox. Я установил фокус с помощью document.getElementById("textfield").focus() - это прекрасно работает при прямом вызове страницы.

Но при загрузке в greybox установка фокуса на событие onload() возвращает:

Невозможно переместить фокус в элемент управления, потому что он невидим, не включен, или типа, который не принимает фокус

Позднее он работает нормально.

Любые идеи?

Спасибо!

2 ответа

Это хорошо известная проблема с IE.

Вы можете прочитать об этом здесь.

Решение заключается в использовании функции setTimeout() для задержки времени выполнения focus().

вам нужно заменить вашу строку:

document.getElementById("textfield").focus();

со следующим:

setTimeout(function() { document.getElementById("textfield").focus(); }, 10);


Просто быструю реакцию на это... пришлось решить сегодня вечером. Использовал setTimeout для быстрого вызова функции фокуса после отображения страницы greybox.

Небольшой jQuery, используемый в моей версии, поскольку он уже был в этом проекте, но вы можете так же легко использовать window.onload()

licensed under cc by-sa 3.0 with attribution.