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