webForumDet fria alternativet

Ladda ner data från popup med formulär

JavaScript

9 svar · 549 visningar · startad av addeweb

Medlem sedan jan. 2004216 inlägg
Frågan#1

Jag vet inte om jag har missat något. Har gjort iordning en sida i en popup-fönster och som innehåller 2 olika selectboxar. Jag ska kunna välja i den ena boxen eller båda boxarna för att sedan infoga uppgifterna från boxarna ner till sidan som popup-fönstret laddats från. Formuläret på sidan som tar emot uppgifterna från popup-fönstrets formulär till sina två textfält får inte dessa fält ifyllda. Dessa textfält är namngivna som de ska. Har jag missat något? Tacksam för tips.

Popupfönster med sida som innehåller 2 selectboxar:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Välj menyrubrik</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script language="JavaScript" type="text/javascript">
<!--
function addInfo(o){
	if(!window.opener){
		return 0;
	}
	if(o.elements["s1"].selected){
		window.opener.document.forms["f"].elements["parent"].value = o.elements["s1"].value;
	}
	if(o.elements["s2"].selected){
		window.opener.document.forms["f"].elements["child_of"].value = o.elements["s2"].value;
	}
	self.close();
};
</script>
<script language="JavaScript" type="text/javascript">
<!--
var submenu_mids = new Array();
var submenu_headings = new Array();
submenu_mids[1] = new Array();
submenu_mids[2] = new Array('5', '6', '11');
submenu_mids[3] = new Array();
submenu_mids[4] = new Array();
submenu_headings[1] = new Array();
submenu_headings[2] = new Array('Näringslära', 'Fettförbränning', 'Ordlista A-Ö');
submenu_headings[3] = new Array();
submenu_headings[4] = new Array();

function populate( id, theForm ){
	theForm.s2.options.length = submenu_mids[id].length+1;
	for(i=0; i<submenu_mids[id].length; i++){
		theForm.s2.options[i+1].text = submenu_headings[id][i];
		theForm.s2.options[i+1].value = submenu_mids[id][i];	
	}
}
-->
</script>
</head>
<body id="body_print">
<h3>Välj menyrubrik</h3>

<form name="myform" onsubmit="addInfo(this)">
	<select name="s1" onChange="populate( this.selectedIndex, this.form )">
			<option value="0">Ej valt</option>
		<option value="2">OM MIG</option>
		<option value="3">MAT & TRÄNING</option>
		<option value="21">PERSONLIG TRÄNING</option>
		<option value="4">KONTAKT</option>

	
	</select>
	<select name="s2">
	 	<option>Ej valt</option>
	</select>
	<input type="submit" value="Infoga" />
</form>
<p style="margin-top: 20px; text-align: center"><input type="button" name="close" onclick="window.close();" value="Stäng fönstret!" /></p>
</body>
</html>

Sidan som tar emot uppgifterna:

<form name="f" action="" method="post">
			<div style="padding: 0 0.3em 0 0">
				<strong>Menyrubrik</strong><br /><input type="text" name="heading" value="Personlig träning" size="20" maxlength="60" />
				<input type="text" name="parent" size="3" maxlength="3" />

				<input type="text" name="child_of" size="3" maxlength="3" />
<input type="button" name="insert" onclick="popupwindow('content_menu_selectbox.php',400,150)" value="..." title="Välj meny" />				<input type="submit" name="save" value="Spara" />
				<input type="button" onclick="document.location.href='/page.php?topid=21&amp;id=21'" value="Avbryt" />			</div>
		</form>
Medlem sedan dec. 20025 483 inlägg
#2

addeweb skrev:

o.elements["s1"].selected
...
o.elements["s2"].selected

Det finns inget attribut "selected". I stället skulle du kunna skriva:

.selectedIndex > 0
Medlem sedan jan. 2004216 inlägg
#3

Jag har gjort ändringar men det funkar fortfarande inte. Ska det se ut så här?

function addInfo(o){
	if(!window.opener){
		return 0;
	}
	if(o.elements["s1"].selectedIndex > 0){
		window.opener.document.forms["f"].elements["parent"].value = o.elements["s1"].value;
	}
	if(o.elements["s2"].selectedIndex > 0){
		window.opener.document.forms["f"].elements["child_of"].value = o.elements["s2"].value;
	}
	self.close();
};
Medlem sedan dec. 20025 483 inlägg
#4

selectedIndex > 0 innebär att om "Ej valt" är vald när formuläret skickas, så visas ej den texten i huvudfönstret. Vill du att det skall visas kan du i stället skriva selectedIndex != -1.

Sedan skall det även stå

o.elements["s1"].options[o.elements["s1"].selectedIndex].value

...och likdant för "s2".

Medlem sedan jan. 2004216 inlägg
#5

Jag har lagt till de ändringar som du har föreslagit men fortfarande funkar det inte att lägga in värden i formuläret på huvudsidan. Vad är det som jag har missat ta med?
Senaste ändring:

<script language="JavaScript" type="text/javascript">
<!--
function addInfo(o){
	if(!window.opener){
		return 0;
	}
	if(o.elements["s1"].selectedIndex > 0){
		window.opener.document.forms["f"].elements["parent"].value = o.elements["s1"].options[o.elements["s1"].selectedIndex].value;
	}
	if(o.elements["s2"].selectedIndex > 0){
		window.opener.document.forms["f"].elements["child_of"].value = o.elements["s2"].options[o.elements["s2"].selectedIndex].value;
	}
	self.close();
};
-->
</script>

Formuläret på huvudsidan:

<form name="f" action="" method="post">
<div style="padding: 0 0.3em 0 0">
<strong>Menyrubrik</strong><br />
<input type="text" name="heading" value="Priser" size="20" maxlength="60" />
<input type="text" name="parent" size="3" maxlength="3" />
<input type="text" name="child_of" size="3" maxlength="3" />
<input type="button" name="insert" onclick="popupwindow('content_menu_selectbox.php',400,150)" value="..." title="Välj meny" />
<input type="submit" name="save" value="Infoga" />
<input type="button" onclick="document.location.href='/page.php?id=20'" value="Avbryt" />
</div>
</form>
Medlem sedan dec. 20025 483 inlägg
#6

För mig fungerar det. Men! Någonting som gäckade mig ett bra tag innan jag upptäckte varför, är att du i ditt första inlägg har en påbörjad kommentar överst i det första skriptblocket, men inget avslutande dito. När jag åtgärdade detta fungerade alltsammans. :)

Medlem sedan jan. 2004216 inlägg
#7

Jag har också lagt märke till att jag glömt ta med slutkommentar i mitt första inlägg och lagt till den i efterhand men ändå fungerar inte den som den ska. Det måste vara något som fortfarande fattas. Konstigt!

Medlem sedan dec. 20025 483 inlägg
#8

Jag kan lägga upp ett exempel här på wF. Ett ögonblick...

Medlem sedan dec. 20025 483 inlägg
Medlem sedan jan. 2004216 inlägg
#10

Jag har jämfört min källkod med exemplets källkod och hittat felet. Det var value-attributet med värdet 0 i den andra select-satsen (s2) och som inte skulle vara med. Attributet togs bort och sedan var det klart. Tack för hjälpen!!

<form name="myform" onsubmit="addInfo(this)">
	<select name="s1" onchange="populate( this.selectedIndex, this.form )">
			<option value="0">Ej valt</option>
		<option value="2">OM MIG</option>
		<option value="3">MAT & TRÄNING</option>
		<option value="21">PERSONLIG TRÄNING</option>
		<option value="4">KONTAKT</option>

	
	</select>
	<select name="s2">
	 	<option value="0">Ej valt</option>
	</select>
	<input type="submit" value="Infoga" />
</form>
261 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)