Avatar billede qub- Novice
30. november 2009 - 12:05 Der er 5 kommentarer og
1 løsning

post fra popup til input på side

Hejsa..

Jeg har en popup side, med en form og en masse checkbox.. Det er så meningen at når man poster dette, skal popup vinduet lukke af sig selv, og posten (som bliver lavet med php: $_POST[]) skal så smides ind i en input på den side man åbner popup vinduet..


Har før haft succes med at bruge følgende script:
function addLink(url) {
    document.frm.picture.value = url;
    window.opener.document.frm.picture.value = url;
}

<a href="#" onclick="addLink(\'' . $f . '\'); window.close(); return false">


Og det har fungeret fint.. Men kan ikke få det til at virke når den skal ha en masse POST's med...
Avatar billede tjens Nybegynder
30. november 2009 - 23:14 #1
Her er et eksempel, hvor et popupvindue med en form, sender alle felter tilbage til startsiden, i et JSON objekt.

Hovedside:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Popup and sendback</title>

<script type="text/javascript">

var popwin;

function receiveFromPopup(objReply) {
    popwin.close();
    var elm = document.getElementById("returnID");
    for ( key in objReply ) {
        elm.appendChild( document.createTextNode( key + ' = ' + objReply[key] ) );
        elm.appendChild( document.createElement("br") );
    }


function StartPopup() {
    popwin = window.open( 'popup.html', '_blank', "height=200,width=300,status=no,toolbar=no,menubar=no,location=no");
}
</script>
</head>
<body>
<h3>Test value from popup</h3>
<div  id="returnID" style="border: 2px solid gray; padding: 5px;"></div>
<p>
  <input type="button" value="Open Popup" onclick="StartPopup()">
</p>
</body>
</html>

Popupside:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Popup and sendback</title>
<script type="text/javascript">

function sendFormBack() {

    var reply = {
        fullname:  document.myForm.fullname.value,
        message:  document.myForm.message.value,
        checkbox1: document.myForm.checkbox1.checked,
        checkbox2: document.myForm.checkbox2.checked
    }
    opener.receiveFromPopup(reply);
}
</script>
</head>
<body style="padding: 50px;">

  <form name="myForm" action="" onsubmit="sendFormBack(); return false;">
    <input name="fullname" type="text" value="type your full name here" onfocus="this.select();"><br>
    <input name="message"  type="text" value="type your message here" onfocus="this.select();"><br>
    CB1 <input name="checkbox1" type="checkbox" /><br>
    CB2 <input name="checkbox2" type="checkbox" /><br>
    <input type="submit" value="Send data back">
  </form>

</body>
</html>


Du skal så bare skrive funktion receiveFromPopup om til at behandle de modtagne data, så det passer til din opgave.

Jeg er ikke sikker på, at jeg helt forstår hvad du vil, men hvis du har en form på hovedsiden kan du f.eks. skrive:

document.myForm.fullname.value = objReply.fullname;
Avatar billede qub- Novice
01. december 2009 - 19:08 #2
Hmm kan ik helt få det til at virke med det du gir mig der..

Men kan prøve at forklare præcis hvordan jeg mener...

Jeg har en side der hedder side1.php hvori der er en form, med inputs, og en af de inputs skal informationen for popup vinduet ende i..:

<script type="text/javascript">
function vennerSelector()
{
    popwin = window.open("side2.php?id='.$row['id'].'", "vennerSel", "height=600, width=800, scrollbars=yes, status=no");
}
</script>

<form action="side3.php?id='.$_GET['id'].'" method="post">
<table valign="top" border="0" cellpadding="0" cellspacing="0">
<tr>
  <td><input type="text" name="venner" class="inputlogin" value="'.$row['venner'].'"> <input type="button" value="Hent" onclick="vennerSelector();" /></td>
</tr>
</table>
</form>


Min side2.php (altså popup vinduet) poster så en masse checkbox'es ud der indikere et id hver.. og man skal så kunne vælge nogle af disse id's:

<form name="myForm" action="">
<table valign="top" border="0" cellpadding="0" cellspacing="0">
';
$query = mysql_query("Select * from $Tsite_roskilde WHERE status=1 order by Fornavn asc") or die(mysql_error());
while($row = mysql_fetch_array($query))
{
print '
<tr>
  <td class="content_mid2"><b><input '.$checked.' type="checkbox" name="venner[]" value="'.$row['id'].'"></b></td>
</tr>
';
}
<tr>
  <td align="center" class="content_mid"><input type="submit" name="Update" value="Tilføj venner"></td>
</tr>
</table>
</form>



Har smidt lidt php ind, for at vise at der bliver spyttet en masse checkboxes ud..

Håber det gjorde det mere forståeligt ? eller må du spørge...
Avatar billede tjens Nybegynder
01. december 2009 - 20:11 #3
Hvordan skal de valgte venner stå i side 1 efter popup'en er lukket?


Skal der være en lang liste i
<input type="text" name="venner" class="inputlogin" value="'.$row['venner'].'">

Hvis ja: Hvordan skal vennerne adskilles i feltet?
Avatar billede qub- Novice
01. december 2009 - 22:37 #4
det er kun id's som bliver smidt ind i den imput, og max 5 stykker.. så det bliver ik så langt..

Men de skulle gerne smides ind fx sådan her: 3,15,79,45,56

Altså med en , der skiller dem ad.. Men det har jeg egentlig en php function der kan gøre..
Som ser således ud:
$array = $_POST['vagter'];
$vagter = implode(",", $array);

Så i første omgang skal jeg vel bare ha $_POST['vagter'] ført tilbage til hovedsiden.. Med mindre det er bedre at køre php scriptet i popup vinduet...
(undskyld jeg blander php ind i det når det ikke er i den kategori - men spørgsmålet løber sig jo på javascript delen.. :P
Avatar billede tjens Nybegynder
01. december 2009 - 23:38 #5
Her er en test, som lægger value fra alle markerede checkbokse, tilbage i en kommasepareret streng:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Popup and sendback</title>

<script type="text/javascript">

var popwin;

function receiveFromPopup(param) {
    popwin.close();
    document.getElementById("inpID").value = param;


function StartPopup() {
    popwin = window.open( 'popup.html', '_blank', "height=200,width=300,status=no,toolbar=no,menubar=no,location=no");
}
</script>
</head>
<body>
<h3>Test value from popup</h3>
<p>
    <input type="button" value="Open Popup" onclick="StartPopup()">
    <input name="IDs" id="inpID" type="text" value="" readonly><br>
</p>
</body>
</html>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Popup and sendback</title>
<script type="text/javascript">

function sendFormBack() {

    var reply = "";
    var inputs = document.getElementsByTagName('input');
    for ( var i = 0; i < inputs.length; i++) {
        if (inputs[i].checked) {
            reply  += ((reply.length>0)?",":"") + inputs[i].value;
        }
    }
    opener.receiveFromPopup(reply);
}

</script>
</head>
<body style="padding: 50px;">
  <pre>
    Arno  <input type="checkbox" value="1"/>
    Benni <input type="checkbox" value="2"/>
    Conny <input type="checkbox" value="3"/>
    Ditte <input type="checkbox" value="4"/>
    Erika <input type="checkbox" value="5"/>
    <button onclick="sendFormBack();">OK</button>
</pre>
</body>
</html>

Bemærk at der nu ikke er nogen <form> eller submit i popup'en: Kun checkboxe er af typen <input> for at de nemmere kan findes via javascript med: getElementsByTagName('input');
Avatar billede qub- Novice
02. december 2009 - 15:40 #6
Det ser sku ud til at virke fint..

Jeg siger tusind tak for din ekspertise.. :)
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