Как правильно убирать всплывающее окошко?
Здравствуйте!
Вот такая беда: окошко (div.obj_list) выпадает по событию onfocus="ulist_up()" в инпуте (input[name=view]) и убирается по событию onblur="hide_list();" дело всё в том, что в таком случае не срабатывает событие onclick внутри этого окна... я пробовал сделать вот так, но не сильно помогло:
j("#"+divid+">div.obj_list").mouseenter(function(){
j("#"+divid+">input[name=view]").blur(function(){});
});
j("#"+divid+">div.obj_list").mouseleave(function(){
j("#"+divid+">input[name=view]").blur(function (){hide_list();});
});
|
ender1982,
Выложите минимально необходимый HTML код к скрипту |
Есть логическая неувязка-если кликните на окошко то событие onblur произойдет
и потом Вы это окошко уже не закроете поэтому лучше закрывать его по событию mousedown на window(body) а в окне написать event.stopPropogation() |
Вы можете использовать setTimeout, чтобы окно не исчезало мгновенно. По событию hover или mouseover на всплывающем окне Вы можете дропать старый setTimeout и запускать новый отсчет. Как-то так... Может завтра утром проснусь и код напишу, но лучше на это не рассчитывать :)
|
если кому интересно нашёл вот такой интересный простой способ решения: так называемое модальное окно)
.mask{ position: absolute; height: 100%; width:100%; top: 0; left:0; z-index:50;}
.pop-up-window{ z-index:150;}
function ulist_up(){
j("body").append("<div onmousedown='hide_list();' class='mask'>/div>");
}
function hide_list(){
j('.mask').hide();
}
|
ender1982,
лучше заместо hide() использовать remove()
function ulist_up(){
$("body").append("<div onmousedown='hide_list();' class='mask'></div>");
}
function hide_list(){
$('.mask').remove();
}
|
| Часовой пояс GMT +3, время: 19:44. |