Mein vereinfachter Code:
Eins vorweg, für JS Probleme ist der PHP Code völlig uninteressant, lediglich das was im Browser ankommt spielt eine Rolle.
Formular im Hauptfenster:
<form name="fupload" method="post" action="index.php">
Modell:
<select name="upload_modell" onChange="popnewentry('<?php echo $cat; ?>',this.options[this.selectedIndex].value)">
<option value="1" selected>Wert 1</option>
<option value="2" selected>Wert 2</option>
</select>Anlass 1:
<select name="upload_anlass1" onChange="popnewentry('<?php echo $cat; ?>',this.options[this.selectedIndex].value)">
<option value="neu">neu ...</option>
<option value="1" selected>Wert 1</option>
<option value="2" selected>Wert 2</option>
</select><input type="submit" name="upload_go" value="OK">
</form>
Die Funktion popnewentry sieht so aus:
<script language="JavaScript">
<!--
Das hats du aber nicht aus selfhtml, das language Attribut ist lange out und nicht mehr erwünscht, stattdessen fehlt aber das type Attribut. Auch die HTML Kommentare im JS Block sind nur noch historisch relevant (für die erste Browsergeneration)
function popnewentry(cat,val) {
if (val == "neu")
{
var sURL = "includes/read_popup_new.php?cat=" + cat;
In URLs müssen Sonderzeichen kodiert werden, damit das immer funktioniert solltest du cat mit z.b. escape() kodieren.
function insert_newoption(newval, newid, fieldname) {
if (opener && opener.closed!=1) {
Die Eigenschaft closed ist entweder true oder false, aber niemals 1
Die Frage ist, ob hier opener überhaupt nmoch existiert?
Das merkst du, wenn du dir opener mal anzeigen läßt:
Was ergibt: alert(opener)
und falls hier ein sinnvoller Wert drin steht immer weiter:
alert(opener.document)
alert(opener.document.fupload)
alert(opener.document.fupload.fieldname)
Struppi.
Javascript ist toll (Perl auch!)