| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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 таймаут запустил... |