20. januar 2003 - 16:10Der er
20 kommentarer og 1 løsning
Skjul lag ved klik udenfor laget
Hey, har siddet og forsøgt at skjule et lag når der trykkes udenfor det. Jeg forsøgte med onblur="skjullag()" men det giver et problem, hvis jeg klikker på et link i laget forsvinder laget (og linket) før den reagerer på klikket, hvilket er ganske upraktisk.
Nogen der kender en smart måde at gøre det på, så laget forsvinder hvis man klikker udenfor, og kun udenfor laget?
Det kunne jeg godt jo, men det er ikke helt det jeg er ude på. Se evt. på www.lequet.com/coolselect/ det er den jeg sidder og roder med for tiden, og det skulle gerne være så tro en kopi som muligt. Hvis du har en almindelig select skjules den jo igen hvis man klikker uden for den. Det er det jeg gerne vil efterligne hvis det er muligt.
OK, har ikke selv lige mulighed for at bruge IE, og er bestemt ikke glad for ting der kun virker i en browser :) Kan forstå at det ikke er den nemmeste opgave i denne verden, men det må da være muligt. Ærgeligt at der ikke findes en onClickOutside handler :o)
set en div id="L1" på dit layer og onclick="hide('L1')" i din body. Ved ikke om det fungerer i andre en IE. Du skal også lige have en js fil i head: <script type="text/javascript">function show(object) { if (document.getElementById && document.getElementById(object) != null) { document.getElementById(object).style.visibility='visible'; document.getElementById(object).style.display='block'; } else if (document.layers && document.layers[object] != null) document.layers[object].visibility = 'visible'; else if (document.all) { document.all[object].style.zIndex = 100; document.all[object].style.visibility = 'visible'; } }
function hide(object) { if (document.getElementById && document.getElementById(object) != null) { document.getElementById(object).style.visibility='hidden'; document.getElementById(object).style.display='none'; } else if (document.layers && document.layers[object] != null) document.layers[object].visibility = 'hidden'; else if (document.all) document.all[object].style.visibility = 'hidden'; }
Jeg forsøgte mig med en lille ide. Hvis jeg nu satte dette på mit lag :
onmouseover="mpos = 1 ;" onmouseout="mpos = 0 ;"
Så kunne jeg jo tjekke om musen var over laget eller uden for laget ved klik. Men af en eller anden grund ville det ikke rigtigt lykkedes for mig. Har en fornemmelse af at det skyldes at et lag som sådan ikke kan have fokus. Jeg forsøgte mig med dette
document.getElementById('mitlag').focus() ;
Men det gav en fejl om at focus ikke er en funktion. Kan godt være at IE er ligeglad på det punkt, ved jeg ikke, men det hjælper desværre ikke rigtigt mig noget :(
/cdc > Ser umidelbart ud til at være det samme jeg forsøgte til at starte med, hvor man ikke kunne klikke på links i laget. Tilbage til start altså :)
Kan ikke få det til at virke, og den eneste forskel jeg nu kan se er at mine links blot har en href="#" og en onclick="dosomething() ; return false ;", prøv lige om dit virker med en onclick="alert('test')" på linksne, har en ide om at det ikke gør
Jeg kan få den til at skjule ved klik, men linksne virker stadig ikke uanset hvad jeg så forsøger :(
phoenixv > Det vel også godt nok er det ikke :) Desværre kan jeg ikke klikke på linket i dit eksempel. Ved ikke hvorfor, og hvorfor det virker i /cdc's eksempel, kan simpelthen ikke gennemskue det :(
Undskyld ventetiden, og det er vist tid til at få lukket her.
Tak for hjælpen allesammen, så lykkedes det endelig :)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.