Avatar billede jmc Nybegynder
14. maj 2003 - 00:06 Der er 9 kommentarer og
1 løsning

open win

er der ikke en måde at undgå at vinduet går bagved uden at skulle benytte modal? eller at alternativ til modal som er svært at styre syntes jeg. Problemet er at forms ikke virker med almindeligt on blur / focus (javascriptet)

har du et tip?
Avatar billede olebole Juniormester
14. maj 2003 - 00:15 #1
<ole>

Hvad er det, du finder vanskeligt at styre? Det er måske en fordel at hjælpe med det i stedet - for der er ikke nogen løsning, der er nær så god.
At rode med focus() eller/og blur() giver næsten altid nogle uheldige 'sidegevinster'  :)

/mvh
</bole>
Avatar billede jmc Nybegynder
14. maj 2003 - 00:22 #2
okay har du et script som virker med modal, helst så simpelt som muligt.
Avatar billede olebole Juniormester
14. maj 2003 - 00:24 #3
Det ved jeg ikke, da jeg jo ikke ved, hvad du skal bruge det til - men jeg har da mindst skrevet de første 100 scripts, hvor jeg bruger showModalDialog(), så mon ikke?  :)
Avatar billede jmc Nybegynder
16. maj 2003 - 17:44 #4
jeg skal bare åbne et vindue som skal blive i top. vinduet indeholder en form med en submit knap.
Avatar billede olebole Juniormester
19. maj 2003 - 23:02 #5
En modalDialog er ikke bygget til, at man skal navigere i den ... og det gør man jo med en form.
Det kan du omgå ved at kalde et dokument (i dialogen), som indeholder en 100% iframe med det egentlige dokument som source. Den iframe fylder hele dialog-vinduet og den kan der navigeres i.

En anden mulighed er at kalde dialogen med hovedvinduet selv som det andet argument:

var myDial = false;
myDial = showModalDialog("fil.html", this, "... en masse om, hvordan dialogen ser ud ...");

Så kan du lave en knap i filen 'fil.html', der først kører et script, der kopierer dokumentets felt-værdier til nogle tilsvarende hidden fields i en form i hoved-dokumentet.
Derefter kan formen submittes, hvorved siden reloades og dialogen forsvinder.
Det kan gøres ved at man i dokumentet i dilogen refererer til:
  window.dialogArguments

<html>
<head>
    <title>TITLE</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/JavaScript">
var d=document;
function doForm(f) {
    var pW = window.dialogArguments;
    pw.document.FORMNAVN.navn.value = f.navn.value;
    pw.document.FORMNAVN.email.value = f.email.value;
    pw.document.FORMNAVN.submit();
    window.close();
}
</script>
</head>
<body>

<form onsubmit="return false">
Navn: <input type="text" name="navn"><br>
E-mail: <input type="text" name="email"><br>
<button onclick="doForm(this.form)">Send</button>
</form>

</body>
</html>

En tredie mulighed er at bruge dialogens returnValue:

var myDial = false;
myDial = showModalDialog("fil.html", "", "... en masse om, hvordan dialogen ser ud ...");

Og HTML'en:

<html>
<head>
    <title>TITLE</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/JavaScript">
var d=document;
function doForm(f) {
    var aReturn = new Array();
    aReturn["navn"] = f.navn.value;
    aReturn["email"] = f.email.value;
    window.returnValue = aReturn;
    window.close();
}
</script>
</head>
<body>

<form onsubmit="return false">
Navn: <input type="text" name="navn"><br>
E-mail: <input type="text" name="email"><br>
<button onclick="doForm(this.form)">Send</button>
</form>

</body>
</html>

Nå dialogen så lukker, har du et array på hoved-siden med de to formfelters værdier liggende. Dem kan du så fylde i en form, der submittes. Altså:

var myDial = false;
myDial = showModalDialog("fil.html", "", "... en masse om, hvordan dialogen ser ud ...");

if (myDial) {
    document.FORMNAVN.navn.value = myDial["navn"];
    document.FORMNAVN.email.value = myDial["email"];
    document.FORMNAVN.submit();
}

/mvh
Avatar billede olebole Juniormester
19. maj 2003 - 23:05 #6
Ups ... vær lige opmærksom på, 'pw' og 'pW' ikke er det samme  :)
Sådan skal scriptet fra før se ud:

<script type="text/JavaScript">
function doForm(f) {
    var pW = window.dialogArguments;
    pW.document.FORMNAVN.navn.value = f.navn.value;
    pW.document.FORMNAVN.email.value = f.email.value;
    pW.document.FORMNAVN.submit();
    window.close();
}
</script>

Der var også en overflødig linie.
Avatar billede jmc Nybegynder
12. december 2003 - 22:27 #7
hvem skal have points?
Avatar billede olebole Juniormester
13. december 2003 - 00:14 #8
... det må vist være mit stikord  :)
Avatar billede jmc Nybegynder
13. december 2003 - 01:08 #9
takker 8)
Avatar billede olebole Juniormester
13. december 2003 - 05:32 #10
... anytime  ;o)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester