Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Как правильно убирать всплывающее окошко? (https://javascript.ru/forum/jquery/29773-kak-pravilno-ubirat-vsplyvayushhee-okoshko.html)

ender1982 10.07.2012 18:59

Как правильно убирать всплывающее окошко?
 
Здравствуйте!
Вот такая беда: окошко (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();});
});

Deff 10.07.2012 19:42

ender1982,
Выложите минимально необходимый HTML код к скрипту

vadim5june 10.07.2012 19:55

Есть логическая неувязка-если кликните на окошко то событие onblur произойдет
и потом Вы это окошко уже не закроете
поэтому лучше закрывать его по событию mousedown на window(body) а в окне написать event.stopPropogation()

cmd 11.07.2012 03:50

Вы можете использовать setTimeout, чтобы окно не исчезало мгновенно. По событию hover или mouseover на всплывающем окне Вы можете дропать старый setTimeout и запускать новый отсчет. Как-то так... Может завтра утром проснусь и код напишу, но лучше на это не рассчитывать :)

ender1982 11.07.2012 16:01

если кому интересно нашёл вот такой интересный простой способ решения: так называемое модальное окно)

.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();
}

jeysmook 12.07.2012 09:18

ender1982,
лучше заместо hide() использовать remove()
function ulist_up(){
       $("body").append("<div onmousedown='hide_list();' class='mask'></div>");
}

function hide_list(){
       $('.mask').remove();
}


Часовой пояс GMT +3, время: 05:04.