Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Как сфокусировать div


Автор: Nata123 15.2.2006, 19:07
как программно установить фокус на div, это делается длоя того, чтобы вызвать обработчик onkeypress?

я делаю так divObj.focus(); но это работает так как нужно только в IE

Автор: Alx 15.2.2006, 19:39
думаю, ошиька в 4 строке.

Автор: Innuendo 15.2.2006, 19:50
Alx, не, в 8-ой.. вот там второй оператор кривой.


Nata123,
а что значит сфокусировать? если он у тебя уходит на задний план, а тебе надо на передний, то это делается не фокусом.
А если у тебя текстовое поле, от фокусируй текстовое поле, а не весь див..

Автор: 12345c 15.2.2006, 20:04
Nata123, странно, что работает, ни у кого до сих пор не работало, если только у DIV не установлено contentEditable=true; (ie). Только в ie будет работать.

А что мешает фокус считать совершенно условным понятием, а keypress ловить на document? (Правда, нужно позаботиться о прокрутке документа в видимую область, что focus() делает.)

Автор: Nata123 16.2.2006, 10:52
Товарищи умники!
вместо того, чтобы тешить своё самолюбие, осветили бы по существу.

Я делаю поле- автозаполнения, т.е. человек в инпуте (эдите) начинает вводить буквы, ему подсвечивается в диве все города , которые с этих букв начинаются. Я хочу, чтобы человек мог клавишами ходить по списку подсвечивающихся городов, т.е. он нажимает клавишу - вниз, когда ввёл нужные буквы, и див становится активным (я это назвала "сфокусированным")и теперь я хочу, чтобы keypress срабатывал уже на диве.
я это делала методом divObj.focus(), но это работает только в IE , в опере keypress работает на диве, если на него наведена мышка..

и ещё, если знаете, подскажите метод, который определяет активен ли этот элемент? типа element.hasFocus() (true/false)
спасибо заранее

Автор: 12345c 16.2.2006, 13:21
Товарищ[ь] Nata123, я лишь про то, что Вы что-то недоговариваете - см. пример с фокусами, как описано, который не работает в ie.
Код
<div id=d1 onclick=document.all.d102.focus()>1</div>
<script>for(i=2;i<100;i++)document.write('<div>'+i+'</div>');</script>
<div id=d102 onclick=document.all.d1.focus()>102</div>
И правильно делает, потому что фокус не активируется на дивах. Позтому, раскройте секрет фирмы, если не трудно.

типа element.hasFocus прямого не существует, вместо этого создают .selection.createTextRange() (ie) и определяют, в каком месте он:

Код
onclick=r=document.selection.createRange();alert(r.parentElement().id);

Автор: frei 20.2.2006, 10:38
Я на пальцах объясню...просто сложно объяснить..
Есть див, у него на onkeypress срабатывает функция MyFunc(), просто пусть выводится сообщение.

если открыть страницу с этим дивом в IE, и кликнуть на него, увести мышку в сторону, а потом нажать любую клавишу, сработает функция MyFunc(), в опере сколько ни кликай эта функция сработает, только если мышка на этом диве...
так вот divObj.focus() в IE делает тоже самое , что если бы мы кликнули на диве и увели мышку, а вот в Опрере сообветственно не делает...как поступать, что делать?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)