Maxi: Popups und Formulare

Moin,

ich habe in einem Fenster ein Formular, das eine text-input feld mit einem serverseitig generierten namen enthält. daneben befindet sich ein button.
wenn man auf diesen button klickt, soll sich ein popup öffnen, mit dem man eine bestimmten wert auswählen kann.
klickt man auf eien button im popup, dann soll es diesen wert in das input-feld im opener schreiben und sich selbst schließen.

folgendes hab ich schon:

opener

function chooseObj (param) {  
        input = new Object ();  
        input.wert = param;  
        ChooseWindow = window.open ("inc/baum.php?'.SID.'", "chooser",  
"dependent=yes,location=no,menubar=no,resizeable=yes,scrollbars=yes,status=yes,toolbar=no,left=700,top=100,wudth=300,height=800");  
        ChooseWindow.focus ();  
}
. . .  
<input name="dyn_name" value="" />  
<button onClick="chooseObj ('dyn_name');">Objekt Auswählen</button>  
. . .

#popup

function returnID (id) {  
        name = parent.opener.input.wert;  
        alert (name+" - "+id);  
        parent.opener.document.getElementsByName (name).value = id;  
        window.self.close ();  
}
...  
<button onClick="returnID (15);">Id eintragen</button>  
...

Das öffnen funktioniert einwandfrei und er erkennt auch den namen des inputs, aber er trägt nichts ein und schließt sich dann...

Könnt/wollt ihr mir helfen?

  1. parent.opener.document.getElementsByName (name).value = id;

    Könnt/wollt ihr mir helfen?

    Die Zeile hier scheint nicht richtig zu sein - ohne den Rest zu kennen.

    Hilf dir selbst, indem du dich in Zugriff auf verschachtelte Fensterobjekte einliest.

    1. parent.opener.document.getElementsByName (name).value = id;

      Könnt/wollt ihr mir helfen?

      Die Zeile hier scheint nicht richtig zu sein - ohne den Rest zu kennen.

      Hilf dir selbst, indem du dich in Zugriff auf verschachtelte Fensterobjekte einliest.

      Hab auch schon gedacht, dass da der Fehler liegt, weil der Rest ja funktioniert. Der Artikel ist gut, da geht es aber nur um Fenster/Frames. Auf das opener Fenster kann ich zugreifen (parent.opener.*) den ich hole mir auch das input-objekt aber in das formularelement kann ich nicht schreiben.

      Trotzdem Danke für deine schnelle antwort

      1. Hab auch schon gedacht, dass da der Fehler liegt, weil der Rest ja funktioniert. Der Artikel ist gut, da geht es aber nur um Fenster/Frames.

        Ja - und du hast ein Pop-up-Fenster :)

        Auf das opener Fenster kann ich zugreifen (parent.opener.*) den ich hole mir auch das input-objekt aber in das formularelement kann ich nicht schreiben.

        Sollte das dann nicht nur opener.* sein oder hast du im Pop-up ein Frameset?

  2. Mahlzeit Maxi,

    Das öffnen funktioniert einwandfrei und er erkennt auch den namen des inputs, aber er trägt nichts ein und schließt sich dann...

    Kein Wunder, dass er nichts einträgt. Wenn Du das Schließen unterbindest und stattdessen nach dem gescheiterten Versuch des Eintragens in die Fehlerkonsole schaust, sollte Dir bereits ein Licht aufgehen.

    Könnt/wollt ihr mir helfen?

    Aber sicher doch:

    parent.opener.document.getElementsByName (name).value = id;

    http://de.selfhtml.org/javascript/objekte/document.htm#get_elements_by_name@title=getElementsByName() liefert - wie der Name schon vermuten lässt (immerhin steht da ja "ElementS" und nicht "Element") - mehrere Elemente ... bzw. *kann* mehrere Elemente liefern (Zitat: "Auch wenn ein solcher Elementname nur einmal im Dokument vorkommt, muss stets mit Array-Syntax auf die Elemente zugegriffen werden.").

    Für Deinen Fall könnte könnte der <http://de.selfhtml.org/javascript/objekte/elements.htm#allgemeines@title=Zugriff auf Formularelemente> nach Schema 4 bzw. in einer Mischung aus Schema 1 und Schema 4 (je nachdem, welche Informationen Du zu dem Zeitpunkt hast) sinnvoller sein:

    parent.opener.document.forms[0].elements[name].value = id;

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    1. Super, der Artikel hats gebracht.....

      Vielen Dank@all
      mein Chef wird sich freuen (JS-Fan...)

  3. Huhu,

    parent.opener.document.getElementsByName (name).value = id;

    Ich würde sagen, dass die Zuweisung auf mehere Elemente (Input-Felder) nicht funktioniert.

    mfg
    Knusperklumpen

  4. Hallo,

    parent.opener scheint mir etwas zuviel des Guten. opener ist meines Wissens eine Eigenschaft des window-Objekts, nicht irgendeines parent-Elements.

    Die Notation opener.tuWas() würde reichen.

    Und dass sich ein Fenster per Script selber schließen soll, scheint mir auch ziemlich brutal. Das Script würde sich ja in dem Moment den Boden unter den Füßen wegziehen... Das Fenster vom opener aus zu schließen ist sicher besser.

    Gruß, Don P