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


Автор: godsgame 10.1.2006, 00:39
Я так понял у Дивов не существует события onBlur...
Просто у меня есть Див:
Код

<DIV id="money" style="position:absolute;display:none" align="center" onBlur="alert('sss');">


Координаты абсолютные. Он появляется когда пользователь щелкнет на иконке.
Как мне сделать чтоб когда пользователь щелкнул ВНЕ дива (не на див) - чтобы Див скрылся?
(т.е как-будто Див потерял фокус и скрылся)

онБлур - не работает.(проверял)
Добавлено @ 00:46
я так понимаю надо отлавливать щелчек левой или правой кнопки и проверять на диве щелкнули или нет, если нет - скрывать див, так? или проще можно?

Автор: Illuminaty 10.1.2006, 00:51
Цитата(godsgame @ 10.1.2006, 01:39 Найти цитируемый пост)

я так понимаю надо отлавливать щелчек левой или правой кнопки и проверять на диве щелкнули или нет, если нет - скрывать див, так?
я бы делал так

Автор: godsgame 10.1.2006, 10:41
Illuminaty
помоги пожалуйста с реализацией

Автор: 12345c 10.1.2006, 19:27
Я так делал; заодно вылезет ещё проблема - что дивы не присутствуют в цепочке offsetParent, если только он не последний в цепочке. Приходится использовать таблицы.

godsgame : в простом случае ловишь
Код

document.onclick=function(){закрыть все дивы, которые могут быть открыты;}
, а на диве остановить распространение события (onclick=event.cancelBubble=!0;). Любой другой пример зависит от конкретной реализации, и некорректно просить пример, не показывая ни строчки своего кода : ).

Автор: godsgame 11.1.2006, 10:41
12345c
при щелчке на иконку - Див быстро появляется и сразу же исчезает.
onclick=event.cancelBubble=!0 - не помогает

smile
Добавлено @ 10:43
происходит типа такого:
1) клик - появляется див
2) событие на этот клик закрывает этот див
smile

Автор: 12345c 11.1.2006, 14:03
Да, правильно, на иконке тоже нужно ставить останов распространения события (cancelBubble) - оно доходит до document и закрывает div. И в любом другом месте, где клик не должен закрывать div-ы - ссылки, например.

Или вариант - в самом document.onclick проверять, откуда событие пришло. Если srcElement (target для Gecko) есть .tagName=='A' или .id==ид_иконки, или .className==класс_иконки, то закрывания не делается.

Автор: godsgame 11.1.2006, 15:13
Цитата

Да, правильно, на иконке тоже нужно ставить останов распространения события (cancelBubble)


пробовал и тут ставить - тоже самое.

Попробую твой второй вариант и напишу результаты.

Автор: GIK 11.1.2006, 15:22
Уже пол часа читаю топ и немогу понять что вообще надо реализовать?
Код

<html>
 <head>
 <script language="JavaScript">
    document.onclick=function(){
    
    document.getElementById("money").style.visibility="hidden";   
 }
  </script>
 </head>
<body>
<div id="money" style="position:absolute;visibility:visible;color:green;"align="center">
fx123fx321
</div>
</body>
<html>

Добавлено @ 15:30
Вообще то Клик это не потеря фокуса, насколько я знаю???
и вообще onBlur в диве???
Опишите задачу по подробнее, а то что-то интересно стало smile

Автор: godsgame 11.1.2006, 15:36
GIK
вот это smile

Код

        function hide_all() {
            var tgt=window.event? window.event.srcElement: ev.target;
            if ( tgt.id !== "mon_ic" ) {            
                m_hide(money); 
                m_hide(thing);
            }
        }
        
        document.onclick = hide_all;


Код

<DIV id="money" style="position:absolute;display:none" align="center" onclick="event.cancelBubble=true;">abc</DIV>
...
<img src="img/money.gif" id="mon_ic" align="top" alt="" width="12" height="12" onclick="uShow('money','','');">



12345c
работает как часы. Огромное спасибо!
Добавлено @ 15:38
GIK
задача:
1) щелкаешь на кнопку - появляется Див.
2) Щелкаешь ВНЕ Дива - див пропадает

вроде такая....

Цитата

Вообще то Клик это не потеря фокуса, насколько я знаю???
и вообще onBlur в диве???

Клик это не потеря фокуса, но должно выглядеть как потеря smile)))
в том-то и дело что в Дивах onBlur не работает!
Добавлено @ 15:40
если бы работал онБлур было бы все гораздо проще... типа такого:
Код

<div id="money" onblur="m_hide(money);" onclick="event.cancelBubble=true;"></div>

Автор: GIK 11.1.2006, 15:49
Цитата

в том-то и дело что в Дивах onBlur не работает!

Естественно,
это впринципе неможет быть.

Цитата

задача:
1) щелкаешь на кнопку - появляется Див.
2) Щелкаешь ВНЕ Дива - див пропадает

Ну вот...
То клик на документе, то на кнопке,
пойми после этого что надо smile

А вообще, задача решилась?

Автор: godsgame 11.1.2006, 15:53
GIK
Цитата

То клик на документе, то на кнопке,
пойми после этого что надо

клик влюбом месте ВНЕ дива!!

решилась. см. мой код.

Автор: 12345c 11.1.2006, 20:07
GTK: когда встречается категоричное утверждение, то его опровержение быстро находится : )

См. код (в IE):
Код

<div contenteditable onblur=alert(0)>idfveruvnr nrtngtrng $nhgtrn l$rthnr</div>

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