webForumDet fria alternativet
Logga in / Bli medlem

Hide-show funkar inte med form

JavaScript

9 svar · 308 visningar · startad av Jesper T

Medlem sedan nov. 20017 144 inlägg
Trådstart#1

Jag lägger detta i <head>

 <script language="Javascript">
var n=1
function hideShow(){
n=n*-1; vis = (n==1)? "hidden" : "visible";
if(document.all){document.all("lager").style.visibility=vis;}
if(document.getElementById){document.getElementById("lager").style.visibility=vis;}
if(document.layers){document.layers["lager"].visibility=vis;}
}
</script>

och så öppnar jag lagret med:

<a href="#bottom" onclick="javascript:hideShow();" title="Lägg till">Lägg till</a>
<div id="lager" style="visibility:hidden;">
<form action="skicka.asp" method="post"> <input type="text" name="texten">
<input type="submit" name="submit"></form>
</div>

1.) Det funkar att öppna och stänga så länge jag inte klickat på "submit", men när jag gjort det så går det inte att öppna och stänga lagret :(
Vad kan detta bero på?

2.) Går det att lägga länken i en iframe och öppna ett lager som ligger i "grundfönstret"?

Medlem sedan nov. 20017 144 inlägg
#2

Någon som vet?

Medlem sedan juni 20004 308 inlägg
#3

Jag säger det en gång till; detta är inte ett lager :) Definitionen lager brukar vara att det är ett löst flytande lager på sidan som alltså inte ockuperar någon plats i det vanliga dokument-flödet. Detta definieras i CSS med position:absolute;. När du skall ge denne egenskap ett värde i Netscape 4.x så är det inte visible/hidden utan show/hide.

Med detta i åtanke kan det se ut så här;

<script language="Javascript">
var visible=(document.layers)?'show':'visible';
var hidden=(document.layers)?'hide':'hidden';
var vis=hidden;
function hideShow(){
	vis=(vis==visible)?hidden:visible;
	if(document.all){document.all("lager").style.visibility=vis;}
	if(document.getElementById){document.getElementById("lager").style.visibility=vis;}
	if(document.layers){document.layers["lager"].visibility=vis;}
}
</script>

<a href="#bottom" onclick="hideShow();" title="Lägg till">Lägg till</a>
<div id="lager" style="position:absolute; visibility:hidden;">
<form action="skicka.asp" method="post"><input type="text" name="texten">
<input type="submit" name="submit"></form>
</div>
Medlem sedan nov. 20017 144 inlägg
#4

Tack! Är det någon som har någon idé om fråga 2?

Medlem sedan juni 20014 421 inlägg
#5

Jo det skall gå alldeles utmärkt du behöver bara referera till sidan som iframen ligger i.

Medlem sedan nov. 20017 144 inlägg
#6

Men efter som att det i länken står onclick="hideShow();", så säger den att funktionen saknas, skall man lägga funktionen i iframen istället? Och <div id="lager"> på själva huvudsidan?

Medlem sedan juni 20014 421 inlägg
#7

Orkar inte sitta och grunka med en iframe för tillfället, men det låter som om det är rätt det du säger, du måste dock lägga till parent. innan document, tror jag...

Medlem sedan juni 20004 308 inlägg
#8

Den glömde jag :)

Ligger länken i en iframe på dokumentet som innehåller lagret och javascript-koden blir länken;

<a href="parent.hideShow();">Just do it</a>

Medlem sedan nov. 20017 144 inlägg
#9

Ok, och jag slipper lägga in funktionen i iframen eller?

Medlem sedan juni 20004 308 inlägg
#10

Japp!

265 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)