webForumDet fria alternativet

Lager i asp

7 svar · 339 visningar · startad av iing9808

iing9808Medlem sedan sep. 200445 inlägg
#1

Jag har en asp sida med 4 st datum (text)fält. När jag klickar i dom så vill jag att det ska komma fram en kalender som jag ska kunna välja datum i. Kalendern ligger i en annan asp fil och tas fram genom att den visas som ett lager. Kan jag från default.asp filen skicka med till kalender filen vilken ruta som datumet ska skrivas in i? Som det ser ut nu så sätts datumet så här:
[KOD]
<a href=Javascript:parent.document.orderForm.inkom_datum.value
</a>
[KOD]
Detta ligger alltså i kalender filen och textrutan som jag ska sätta daumet i heter inkom_datum och ligger i default.asp. Men som sagt, hur får jag med vilken ruta det som datumet ska sättas i via onclick i default.asp?

OveRRidEMedlem sedan feb. 200112 078 inlägg
#2

Flyttas från ASP.

Peter SMedlem sedan dec. 20025 483 inlägg
#3

Det kan du göra genom att skicka med namnet på textrutan i funktionsanropet, typ:

...
<a href="java&#115;cript:void(0)" onclick="showCalendar('[b]namn_på_textrutan[/b]')">...</a>
...

Men eftersom du ej visat hur den relevanta delen av koden ser ut, är ovan nämnda förslag endast en tafatt gissning.

:)

iing9808Medlem sedan sep. 200445 inlägg
#4

default.asp innehåller fyra textfält där datum ska skrivas in. Koden från den första ser ut så här:

 
<div id="Layer1" style="position:absolute; width:300px; height:100px; z-index:1; visibility:hidden"> 
			<iframe src="calendar.asp" width="320" height="170" border="0"leftmargin="0" topmargin="5" marginwidth="5" marginheight="5"  name="float_layer" scrolling="no">
			</iframe> 
		</div>
		<TD>
  			<input type=textfield id=textfield0 name=inkom_datum onclick=showHide('Layer1')>
  		</TD>

showHide funktionen ser ut så här. Först anropas en funktion som retunerar vad det är för browser. Sen sätts den visible om den är gömd från början och göms om den är visible från början.

function showHide(div)
{
	bw = new checkBrowser(div);
	obj=bw.dom?parent.document.getElementById(div).style:bw.ie4?parent.document.all[div].style:bw.ns4?nest?parent.document[nest].document[div]:document[div]:0; 
	if(obj.visibility=='visible' || obj.visibility=='show') obj.visibility='hidden'
	else obj.visibility='visible'
}

När man väljer att visa lagret så kommer det alltså fram en kalender. När du väljer datum så blir det följande länk:

link = "<a href=Javascript:parent.document.orderForm.inkom_datum.value='2004-11-04';showHide('Layer1');>"

Nu skrev jag ut datumet men det är asp variabler som står för datumet förstås. Det datum du väljer skrivs alltså in i textrutan som heter inkom_datum. Sedan anropas en funktion som gömmer lagret igen. Mitt problem är alltså att jag från default.asp ska kunna skicka med en variabel till min lager fil, calendar.asp, som säger vilken ruta man klickat i och då ska denna variabel hamna i länken: <a href=Javascript:parent.document.orderForm.MINVARIABEL.value

Peter SMedlem sedan dec. 20025 483 inlägg
#5

Då kan du göra så här:

// default.asp
<input onclick="showHide('Layer1', this.name)"...

function showHide(div,name)
{
	var cal = window.frames["float_layer"];
	cal.location.href = cal.location.href.split("?")[0] + '?name=' + name;
	bw = new checkBrowser(div);
	obj=bw.dom?parent.document.getElementById(div).style:bw.ie4?parent.document.all[div].style:bw.ns4?nest?parent.document[nest].document[div]:document[div]:0; 
	if(obj.visibility=='visible' || obj.visibility=='show') obj.visibility='hidden'
	else obj.visibility='visible'

}

Nu ligger namnet på textrutan i frågesträngen "name" i calendar.asp.

:)

iing9808Medlem sedan sep. 200445 inlägg
#6

Hmm, jag är rädd för att jag inte får till det trots att du lagt det på silverfat åt mig. Det verkar inte som om min calendar.asp får namnet på rutan som jag klickat i. Om jag lägger till en alert i default.asp så skrivs det ut vilken ruta jag klickat i. Så där är det som det ska.

// default.asp
function showHide(div, name)
{
           alert(cal.location.href + '?name=' + name)
           var cal=window.frames["float_layer"];
           osv...
}

Men försöker jag skriva ut något i calendar.asp så verkar det som om det är tomt. Nedanstående kodsnutt har jag i början på min calendar.asp fil och den ger bara en tom utskrift.

// calendar.asp
Response.Write (Request.Querystring("name"))

Jag antar att det var något liknande du menade med att det ligger med i frågesträngen eller är jag helt ute och cyklar?

Peter SMedlem sedan dec. 20025 483 inlägg
#7

Ja, det var så jag hade tänkt mig. Följande fungerar utmärkt för mig:

// default.asp
<div id="Layer1" style="left:300px;position:absolute; width:300px; height:100px; z-index:1; visibility:hidden"> 
			<iframe src="calendar.asp" width="320" height="170" border="0"leftmargin="0" topmargin="5" marginwidth="5" marginheight="5"  name="float_layer" scrolling="no">
			</iframe> 
		</div>
		<TD><form>
  			<input type=textfield id=textfield0 name=inkom_datum onclick=showHide('Layer1',this.name)>
  		</form></TD>	

<script>
function showHide(div,name)
{
	var cal = window.frames["float_layer"];
	cal.location.href = cal.location.href.split("?")[0] + '?name=' + name;
	bw = new checkBrowser(div);
	obj=bw.dom?parent.document.getElementById(div).style:bw.ie4?parent.document.all[div].style:bw.ns4?nest?parent.document[nest].document[div]:document[div]:0; 
	if(obj.visibility=='visible' || obj.visibility=='show') obj.visibility='hidden'
	else obj.visibility='visible'

}
</script>

Sedan Response.Write (Request.Querystring("name")) i calendar.asp.

Jag har även gjort en liten ändring i funktionen (men det bör fungera ändå).

:)

iing9808Medlem sedan sep. 200445 inlägg
#8

Jag hade en <div> till och när jag plockade bort den så fanns det helt plötsligt något att hämta ur Request.QueryString("name"). Störde tydligen på något vis. Funktionen cal.location.href.split("?")[0] + '?name=' + name; var ju lite bättre än den förra så nu fungerar det alldeles utmärkt. Tack så mycket för din hjälp!!

134 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)