Avatar billede hundevennen Nybegynder
06. oktober 2007 - 15:44 Der er 8 kommentarer og
1 løsning

POPUP eller Iframe??

Jeg vil gerne fra et menupunkt åbne en side der er ca. 300 x 300 px uden statusbar - menulinier m.v. altså en helt hvid lille popup - den skal så indeholde en formular, som så skal sendes videre som mail
Avatar billede trav4u2 Juniormester
06. oktober 2007 - 16:56 #1
Hvad med at lave den iFramed vha. thickbox?
Det er rimelig let at gå til.
Og det er jo et flot resultat ;-)
http://jquery.com/demo/thickbox/
Avatar billede olebole Juniormester
06. oktober 2007 - 19:18 #2
<ole>

jQuery består af gennemført invalid kode, så den idé er måske ikke så god ... selvom det måtte virke  :)

/mvh
</bole>
Avatar billede olebole Juniormester
06. oktober 2007 - 19:58 #3
hundevennen >> Du kan bruge en iframe:

<script type="text/JavaScript">
function openPop() {
    var o = document.getElementById("popup"),
    oDelm = document.documentElement,
    w = oDelm.clientWidth,
    h = oDelm.clientHeight;
    css = o.style;
    css.left = (oDelm.scrollLeft+((w-o.offsetWidth)/2)) + "px";
    css.top = (oDelm.scrollTop+((h-o.offsetHeight)/2)) + "px";
    css.visibility = "visible";
}
function closePop() {
    document.getElementById("popup").style.visibility = "hidden";
}
</script>

<button onclick="openPop()">Åben</button>
<button onclick="closePop()">Luk</button>

<span id="popup" style="position:absolute;border:2px outset threedhighlight;z-index:100;visibility:hidden;">
    <iframe src="form.php" style="width:400px;height:350px" frameborder="1"></iframe>
</span>

Hvis du skriver PHP, kan du så lave 'form.php' noget à la:

<?php
$closePop = "";
if (isset($_POST["contxt"]) && $_POST["contxt"]=="insert") { // Formen er sendt
   
    // Indsæt i DB og hvad du ellers måtte have lyst til her
   
    $closePop = "<script type=\"text/JavaScript\">parent.closePop()</script>";
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<?=$closePop?>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title>TITLE</title>
</head>
<body>

<form action="<?=$_SERVER["PHP_SELF"]?>" method="post">
    <input type="hidden" name="contxt" value="insert">
    <p><input type="text" name="navn"></p>
    <button type="submit">Send</button>
</form>

</body>
</html>
Avatar billede olebole Juniormester
06. oktober 2007 - 20:03 #4
hmmm ... jeg kan se på din profil, du er ASP'er - men eksemplet er så simpelt, at du nok selv kan oversætte  ;o)
Avatar billede neoman Novice
06. oktober 2007 - 20:14 #5
hundevennen  må jeg lige gatecrashe lidt på oleboles indlæg? Jeg har lige bladret i Thickbox, og princippet er interessant. Jeg har et kompliceret slagsmål kørende vedrørende pop-ups. I en løsning er der, på trods af det eksplicit nævnte forbud mod samme i kravspecifikationen, blevet implementeret en popup. Popupen tilbyder nogle funktioner som er nødvendige for at gennemløbe det forløb der nu engang er, men dét, at der er brugt en popup til at præsentere funktionerne skaber helvedes problemer for kunderne, som så slås med popupkillers osv. Så vidt jeg kan se så kan jeg få en lignende funktionalitet her ved brug af iframes - er det rigtigt opfattet ? Og slippe for popupkillers!.
Avatar billede olebole Juniormester
06. oktober 2007 - 20:33 #6
hundevennen >> Du kan også undgå brug af iframe og dermed lægge hele indholdet i ét og samme dokument - og dermed være i endnu bedre overensstemmelse med 'best practice' og stringente standarder:

<script type="text/JavaScript">
function sendForm(oF) {
    var o = document.getElementsByTagName("script")[0],
    oo = o.cloneNode(true);
    oo.src = oF.getAttribute("action") + "?contxt=insert&navn=" + encodeURIComponent(oF.navn.value);
    o.parentNode.replaceChild(oo, o);
    return false;
}
function openPop() {
    var o = document.getElementById("popup"),
    oDelm = document.documentElement,
    w = oDelm.clientWidth,
    h = oDelm.clientHeight;
    css = o.style;
    css.left = (oDelm.scrollLeft+((w-o.offsetWidth)/2)) + "px";
    css.top = (oDelm.scrollTop+((h-o.offsetHeight)/2)) + "px";
    css.visibility = "visible";
}
function closePop() {
    document.getElementById("popup").style.visibility = "hidden";
}
</script>

<button onclick="openPop()">Åben</button>
<button onclick="closePop()">Luk</button>

<div id="popup" style="position:absolute;width:400px;height:350px;border:2px outset threedhighlight;background:threedlightshadow;z-index:100;visibility:hidden;">
    <div style="width:394px;height:344px;margin:1px;background:white;border:2px inset threedhighlight;">
        <form action="form.php" onsubmit="return sendForm(this)">
            <input type="hidden" name="contxt" value="insert">
            <p><input type="text" name="navn"></p>
            <button type="submit">Send</button>
        </form>
    </div>
</div>

- og din form.php indeholder så:

<?php
if (isset($_GET["contxt"]) && $_GET["contxt"]=="insert") { // Formen er sendt
   
    // Indsæt i DB og hvad du ellers måtte have lyst til her
   
    // Sæt en HTTP-header (er ikke strengt nødvendigt)
    header("Content-Type: text/javascript");
    print "closePop()";
}
?>

- oversæt igen selv til ASP. Læg i den forbindelse mærke til, at hvor der før var tale om en POST-request, er der her tale om en GET-request  :)
Avatar billede hundevennen Nybegynder
08. oktober 2007 - 07:55 #7
olebole - tak for hjælpen
Avatar billede olebole Juniormester
08. oktober 2007 - 13:28 #8
Selvtak. Er der noget, du er i tvivl om, siger du lige til  ;o)
Avatar billede olebole Juniormester
09. oktober 2007 - 00:10 #9
Tak for points  :)
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

IT-JOB

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Er du vores nye IT-supporter til Cyberdivisionens supportteam i Hvidovre?

Forsvarsministeriets Materiel- og Indkøbsstyrelse

IT-supporterelever til Lokal IT på Antvorskov Kaserne

KMD A/S

DevOps Engineer

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Forretningskonsulent med fokus på Forsvarets ERP-løsning, DeMars