/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Hvordan får man svar tilbage fra et "child~
Fra : Thomas Due


Dato : 13-02-03 15:58

Hejsa,

Jeg har netop lavet lidt kode der åbner et vindue, via. javascript
"window.open". I dette vindue kører en asp side hvor man skal vælge en dato
i en kalender jeg har lavet. Denne kalender fungere via asp. Når man så har
valgt en dato og trykker på min luk knap, skal den valgte dato jo tilbage
til den side der kalder den.

Jeg kalder siden frem ved at tildele en jscript funktion til en knaps
onclick event.
Denne kode ser sådan her ud:

function getDate(datofelt) {
var dato;
dato = datofelt.value;
var datostr;
datostr = dato.substring(8,10) + '-' +
dato.substring(5,7) + '-' +
dato.substring(0,4);
winref = window.open("/cal.asp?date="+datostr,
"NewMsg",
"<en masse parametre");
}

Jeg har forsøgt at tildele en function til winref's onunload, men det virker
ikke. Jeg har forsøgt at få winref til at finde ud af hvem der åbnede den,
det kan jeg heller ikke. Det skal sige at jeg i høj grad lave både asp og
javascript efterhånden som jeg kommer frem, så det kan godt være at der er
en simpel løsning som jeg bare ikke kan se.

Jeg var meget i tvivl om hvorvidt jeg skulle sende denne post til
d.e.i.w.clientside eller d.e.i.w.serverside, så jeg valgte altså at sende
til serverside.asp, hvis dette er forkert undskylder jeg mange gange.

Jeg kan som ekstra information sige at jeg udvikler til en IIS 5.0 som kører
på en Windows 2000 Server og skulle meget gerne understøtte de fleste
internet explorer siden 4.0.

--
Thomas Due
Software Developer
Scanvaegt Nordic A/S



 
 
Steffen Lieberkind (13-02-2003)
Kommentar
Fra : Steffen Lieberkind


Dato : 13-02-03 23:04

> Jeg har netop lavet lidt kode der åbner et vindue, via. javascript
> "window.open". I dette vindue kører en asp side hvor man skal vælge en
dato
> i en kalender jeg har lavet. Denne kalender fungere via asp. Når man så
har
> valgt en dato og trykker på min luk knap, skal den valgte dato jo tilbage
> til den side der kalder den.
>
> Jeg kalder siden frem ved at tildele en jscript funktion til en knaps
> onclick event.
> Denne kode ser sådan her ud:
>
> function getDate(datofelt) {
> var dato;
> dato = datofelt.value;
> var datostr;
> datostr = dato.substring(8,10) + '-' +
> dato.substring(5,7) + '-' +
> dato.substring(0,4);
> winref = window.open("/cal.asp?date="+datostr,
> "NewMsg",
> "<en masse parametre");
> }
>
> Jeg har forsøgt at tildele en function til winref's onunload, men det
virker
> ikke. Jeg har forsøgt at få winref til at finde ud af hvem der åbnede den,
> det kan jeg heller ikke. Det skal sige at jeg i høj grad lave både asp og
> javascript efterhånden som jeg kommer frem, så det kan godt være at der er
> en simpel løsning som jeg bare ikke kan se.

Placér en funktion, fx. "function newdate(x)" i parent vinduet. Når brugeren
i popup vinduet vælger en dato, kalder du blot denne funktion med det samme
vha. "opener.newdate(x)", hvor x er den dato der vælges. Den er dog ikke
helt fool-proof, men det finder du nok ud af

Overvej et modal vindue, det er lidt nemmere at arbejde med når der skal
smides variable rundt mellem vinduer.

Hilsen
Steffen




Thomas Due (14-02-2003)
Kommentar
Fra : Thomas Due


Dato : 14-02-03 08:22

Steffen Lieberkind <stef--lieberkind.dk ( erstat -- med @ og slet denne
parantes )> wrote in <3e4c1662$0$13256$edfadb0f@dread11.news.tele.dk>:
> Placér en funktion, fx. "function newdate(x)" i parent vinduet. Når
> brugeren i popup vinduet vælger en dato, kalder du blot denne
> funktion med det samme vha. "opener.newdate(x)", hvor x er den dato
> der vælges. Den er dog ikke helt fool-proof, men det finder du nok ud
> af

Det må jeg indrømme at jeg ikke forstod ret meget af. Helt specifikt forstår
jeg ikke umiddelbart hvordan jeg skal kalde newdate fra mit child vindue.

> Overvej et modal vindue, det er lidt nemmere at arbejde med når der
> skal smides variable rundt mellem vinduer.


Mjah, jeg har rodet lidt med et modal vindue, og det er da umiddelbart det,
der virker bedst, bortset fra at jeg åbenbart ikke kan opdaterer indholdet
vha. asp. I hvertfald bliver der åbnet et nyt vindue hver gang jeg forsøger
ændringer via asp.
Så den pæneste (for brugeren) løsning virker til at være med window.open.
Hvis altså jeg kan sende variabler tilbage til "forælder" siden.

--
Thomas Due
Software Developer
Scanvaegt Nordic A/S



Thomas Due (14-02-2003)
Kommentar
Fra : Thomas Due


Dato : 14-02-03 08:25

Lige en tilføjelse:

Det jeg forsøger kan ikke tilfældigvis lade sig gøre i rent asp, bare en
tanke?
Jeg er vel nødt til at blande jscript ind i det?

--
Thomas Due
Software Developer
Scanvaegt Nordic A/S



Steffen Lieberkind (14-02-2003)
Kommentar
Fra : Steffen Lieberkind


Dato : 14-02-03 09:08

> Det jeg forsøger kan ikke tilfældigvis lade sig gøre i rent asp, bare en
> tanke?
> Jeg er vel nødt til at blande jscript ind i det?

Ja, du bliver nødt tilat kombinere jscript og asp for at få input tilbage
fra brugeren, hvis ikke du anvender normal formular teknik.

Hvis du ikke skal arbejde videre med datoen brugeren valgte (på klienten),
kan du i popup vinduet loade en asp side der fanger datovalget, hvorefter
asp-siden sender et jscript til brugeren der automatisk lukker popup vinduet
på klienten.

En alternativ løsning kan være at placere en usynlig iframe i det
oprindelige vindue og glemme alt om popup vinduet. Når brugeren vælger ny
dato i det oprindelige vindue, kalder du, vha. jscript, en asp side i
iframen der gemmer den nye dato.

Den teknik anvender jeg meget i mit Content Management System SequelSite (
www.SequelSite.dk), da det giver et langt smartere interface uden så mange
sideskift. Samtidig minimerer det trafikken på serveren, da der i mange
tilfælde ikke skal gerereres så meget kode pr. brugersession.

Hilsen
Steffen




Thomas Due (14-02-2003)
Kommentar
Fra : Thomas Due


Dato : 14-02-03 09:25

Steffen Lieberkind <stef--lieberkind.dk ( erstat -- med @ og slet denne
parantes )> wrote in <3e4ca3e4$0$13267$edfadb0f@dread11.news.tele.dk>:
> Hvis du ikke skal arbejde videre med datoen brugeren valgte (på
> klienten), kan du i popup vinduet loade en asp side der fanger
> datovalget, hvorefter asp-siden sender et jscript til brugeren der
> automatisk lukker popup vinduet på klienten.

Ok, det forstod jeg næsten, men jeg er ikke sikker på hvordan jeg skal bruge
det.
Lad mig lige recappe hvad det er jeg skal bruge:

Jeg har en formular hvori der indgår et datofelt. Dette felt rummer
(selvfølgelig) en dato. Ud for feltet er et <input type=button> som åbner et
lille vindue med en kalender i. Når vinduet bliver åbnet sendes den dato der
står i datofeltet med over, og kalenderen starter dermed på denne dato. Når
brugeren så har valgt en ny dato (antager vi) skal kalender vinduet lukkes
og den nye dato sendes tilbage til datofeltet i min form.

Det skal lige tilføjes at siden med datofeltet er dynamisk genereret med et
com objekt jeg har skrevet. Såvidt jeg kan se er det jeg skal bruge følgende
(om det så kan lade sig gøre kan jeg ikke overskue):

side1.asp rummer et datofelt, hvis indhold skal redigeres. Dette gøres ved
at side1 åbner side2 som indeholder en kalender. Når brugeren har valgt en
ny dato, lukkes side2 og den nye dato sættes ind i datofeltet på side1. Da
siden er dynamisk genereret af et com objekt kan side1 ikke reloades, men
datofeltet skal opdateres vha. jscript. Det optimale ville på mange måder
være en modalboks, men denne kan ikke opdateret indholdet via asp. Det
resulterer bare i et nyt vindue.

En tanke er at det kan løses ved at tildele en jscript funktion fra side1
til side2's luk knap onclick hændelse. Men kan det lade sig gøre?

--
Thomas Due
Software Developer
Scanvaegt Nordic A/S



Thomas Due (14-02-2003)
Kommentar
Fra : Thomas Due


Dato : 14-02-03 09:26

"Thomas Due" <t.due@scanvaegt_remove.dk> wrote in message
news:b2i955$b71$1@sunsite.dk...
> En tanke er at det kan løses ved at tildele en jscript funktion fra side1
> til side2's luk knap onclick hændelse. Men kan det lade sig gøre?

Alternativt kunne det måske løses ved at overføre en reference til side1 til
side2?
--
Thomas Due
Software Developer
Scanvaegt Nordic A/S



Steffen Lieberkind (14-02-2003)
Kommentar
Fra : Steffen Lieberkind


Dato : 14-02-03 10:17

> En tanke er at det kan løses ved at tildele en jscript funktion fra side1
> til side2's luk knap onclick hændelse. Men kan det lade sig gøre?

Ja, og det er det du bør gøre. Lad os antage at side1 indeholder et formular
felt navngivet "nydato":

<input type=text name=nydato disabled=true>

I side2 placerer du en jscript funktion:

function setnewdate() {
//Tildel nydato feltet i side1 den dato brugeren vælger i kalenderen -
hvordan, kommer helt an på hvordan din kalender er lavet. Lad os antage
datovalget kan fanges vha. et kalenderobjekt: kalender.newdate
opener.document.forms[0].nydato.value=kalender.newdate
self.close()
}

Funktionen setnewdate() kaldes med onclick på side2's "luk vindue" knap:

<input type=button value="OK" onclick="setnewdate()">

Der skal lige tilføjes noget validering, men ellers er det måske noget du
kan bruge.

Hilsen
Steffen




Thomas Due (14-02-2003)
Kommentar
Fra : Thomas Due


Dato : 14-02-03 11:01

Hejsa,

"opener" løste mit problem. Jeg skriver et lille javascript ind i min
kalender.asp VIA asp som definerer den nødvendige jscript kode til at sende
den rettede dato tilbage.

Tusind tak til alle svar, især til Steffen Lieberkind for tålmodighed.

--
Thomas Due
Software Developer
Scanvaegt Nordic A/S



Chrisser (14-02-2003)
Kommentar
Fra : Chrisser


Dato : 14-02-03 10:21

"Thomas Due" <t.due@scanvaegt_remove.dk> skrev i en meddelelse
news:b2i955$b71$1@sunsite.dk...
> Lad mig lige recappe hvad det er jeg skal bruge:
>
> Jeg har en formular hvori der indgår et datofelt. Dette felt rummer
> (selvfølgelig) en dato. Ud for feltet er et <input type=button> som åbner
et
> lille vindue med en kalender i. Når vinduet bliver åbnet sendes den dato
der
> står i datofeltet med over, og kalenderen starter dermed på denne dato.
Når
> brugeren så har valgt en ny dato (antager vi) skal kalender vinduet lukkes
> og den nye dato sendes tilbage til datofeltet i min form.

Fra det nye vindue du har åbnet kan du indsætte din variabel direkte i
formfeltet på det vindue der åbnede det nye vindue med javascriptlinien:
parent.formNavn.feltNavn.value = "værdiFraKalender";

En betingelse er at du har brugt vindow.open metoden til at åbne
kalendervinduet med.

Scriptet med linien kan kaldes fra en event i kalendervinduet - evt. en
oncliks på datoen...


Christina



TH (14-02-2003)
Kommentar
Fra : TH


Dato : 14-02-03 10:39

Davs,

"Chrisser" <cbj@egdatainform.dk> skrev i en meddelelse
news:b2icku$r3b$1@sunsite.dk...

> parent.formNavn.feltNavn.value = "værdiFraKalender";

opener.formNavn.feltNavn.value = "værdiFraKalender";


/TH


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.454 / Virus Database: 253 - Release Date: 10-02-2003



Chrisser (14-02-2003)
Kommentar
Fra : Chrisser


Dato : 14-02-03 10:51

"TH" <th@cogito.dk> skrev i en meddelelse
news:3e4cb91c$0$118$edfadb0f@dtext02.news.tele.dk...
> > parent.formNavn.feltNavn.value = "værdiFraKalender";
>
> opener.formNavn.feltNavn.value = "værdiFraKalender";

Sorry - det var en tanketorsk


Chrisser



TH (14-02-2003)
Kommentar
Fra : TH


Dato : 14-02-03 09:34

Hej,

"Thomas Due" <t.due@scanvaegt_remove.dk> skrev i en meddelelse
news:b2gbq2$5d4$1@sunsite.dk...

> Jeg var meget i tvivl om hvorvidt jeg skulle sende denne post til
> d.e.i.w.clientside eller d.e.i.w.serverside, så jeg valgte altså at sende
> til serverside.asp, hvis dette er forkert undskylder jeg mange gange.

Det er rent clientside...

Du laver funktionaliteten (har du vist gjort). Funktionen du bruger til at
kalde vinduet med udvider du med ID'et på dit datofelt (input-feltet). Så
kender kalenderen det ID den skal levere til. Når brugeren så klikker en
dato i kalenderen opdaterer du bare openers datofelt og lukker vinduet.

Så har du en kalender der kan bruges overalt. Jeg har en kalender kørende
med dette princip hvis du er interesseret?

/TH




---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.454 / Virus Database: 253 - Release Date: 10-02-2003



Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408936
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste