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


Автор: goldmember 14.5.2010, 16:02
При потере фокуса у меня элемент идёт в display='none' с 200 мс задержкой, а как сделать так, чтобы при определённом событии(допустим onmousedown) на каком нибудь другом элементе(определённом) потеря фокуса не происходила, а то что то метод focus() у меня не прошёл....
зы. Например в файрфоксе это по умолчанию реализовано..

Автор: bars80080 14.5.2010, 21:20
а что нужно, отменить скрытие элемента или оставить фокус?

и что реализовано в файерфоксе?

Автор: goldmember 15.5.2010, 11:59
Цитата

а что нужно, отменить скрытие элемента или оставить фокус?

Собственно скрытие элемента у меня происходит при потере фокуса (расшифрую скрывается не элемент который фокус теряет, а некий див , который привязан к нему логически), так что либо то, либо, то
Цитата

и что реализовано в файерфоксе?

Например, когда я скролю див (тот самый), то текстовое поле не теряет фокуса...

Автор: bars80080 15.5.2010, 13:17
ну тогда проще поставить блокиратор в функцию сокрытия, которая бы проверяла условия, тот элемент или не тот был нажат.
это удобнее, если требуется обойти в реакции какой-то один или два определённых элемента

Автор: goldmember 15.5.2010, 13:51
Непонятно как проверить в функции обработчика onblur элемент, на котором нажатие было? Ведь srcElement даст текстовое поле, а не див...

Автор: bars80080 15.5.2010, 20:52
ну, скажем на onblur запускается таймаут вызова функции, на стороннем элементе либо как-то определяем фокус, либо просто вешаем на него onclick и изменение общей переменной. мол, это по мне щёлкнули. таймаут вызывает наш обработчик сокрытия, он проверяет состояние переменной и если она true, то никакой реакции (кроме того, что обратно ставим значение переменной)

таймаут в таких случаях максимум до 20 мс, а иногда и через 1-2 можно поставить

Автор: goldmember 17.5.2010, 15:03
Да это работает, только если onclick сработал на элементе я не див скрываю, а принудительно ставлю фокус полю с которого onblur таймаут запустил...

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