addeweb skrev:
o.elements["s1"].selected ... o.elements["s2"].selected
Det finns inget attribut "selected". I stället skulle du kunna skriva:
.selectedIndex > 0
9 svar · 549 visningar · startad av addeweb
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&id=21'" value="Avbryt" /> </div>
</form>
addeweb skrev:
o.elements["s1"].selected ... o.elements["s2"].selected
Det finns inget attribut "selected". I stället skulle du kunna skriva:
.selectedIndex > 0
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();
};
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".
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>
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. :)
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!
Jag kan lägga upp ett exempel här på wF. Ett ögonblick...
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>