webForumDet fria alternativet

Hide-show funkar inte med form

9 svar · 308 visningar · startad av Jesper T

Jesper TMedlem sedan nov. 20017 058 inlägg
#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"?

Jesper TMedlem sedan nov. 20017 058 inlägg
#2

Någon som vet?

JojoxxMedlem sedan juni 20004 306 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>
Jesper TMedlem sedan nov. 20017 058 inlägg
#4

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

colioneMedlem sedan juni 20013 386 inlägg
#5

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

Jesper TMedlem sedan nov. 20017 058 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?

colioneMedlem sedan juni 20013 386 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...

JojoxxMedlem sedan juni 20004 306 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>

Jesper TMedlem sedan nov. 20017 058 inlägg
#9

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

JojoxxMedlem sedan juni 20004 306 inlägg
#10

Japp!

Genererad på 386 ms · cache AV · v20260730165559-full.f96bc7eb