Paul: form

Moin,
in meiner Anwendung (1) öffne ich ein neues Fenster (2).

In (2) gebe ich einen Begriff ein und schicke das Formular mit <form name="xxx" method="post" action="<?php echo $_SERVER['PHP_SELF']?>"> ab.

Die Eingabe wird mit einer DB verglichen. Wenn der Begriff nicht gefunden wurde, wird das in (2) angezeigt und man kann einen neuen Begriff eingeben.

Wenn der Begriff aber gefunden wurde, soll sich (1) neu aufbauen. Also muss ich das Formular in (2) so ändern:
<form name="xxx" method="post" action="(1)" target="???">

Das ist alles kein Problem. Nur wie kann ich von dem neuen Fenster (2) auf das Ursprungsfenster (1) zugreifen und dieses neu laden?

Paul

  1. Hallo Paul.

    in meiner Anwendung (1) öffne ich ein neues Fenster (2).

    Und wie tust du dies? Per HTML (target-Attribut) oder per JS (window.open)?

    Wenn der Begriff aber gefunden wurde, soll sich (1) neu aufbauen. Also muss ich das Formular in (2) so ändern:
    <form name="xxx" method="post" action="(1)" target="???">

    Das ist alles kein Problem. Nur wie kann ich von dem neuen Fenster (2) auf das Ursprungsfenster (1) zugreifen und dieses neu laden?

    Ich könnte mir hier höchstens vorstellen, dass bereits bei der Eingabe über XMLHttpRequest ermittelt wird, ob der eingegebene Suchbegriff gefunden wurde. Ist dies der Fall, wird das target-Attribut des Formulares per JS gesetzt, was dann beim Absenden des Formulares zum Tragen kommt.

    Eine non-JS-Lösung will mir aber leider nicht einfallen ... (Zumindest keine, bei der man das Formular nicht zwei mal abschicken müsste.)

    Einen schönen Mittwoch noch.

    Gruß, Mathias

    --
    sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
    debian/rules
    1. Hallo Mathias,

      Und wie tust du dies? Per HTML (target-Attribut) oder per JS (window.open)?

      über window.open

      ... Ist dies der Fall, wird das target-Attribut des Formulares per JS gesetzt, was dann beim Absenden des Formulares zum Tragen kommt.

      Genau das will ich. Nur was gebe ich in target="???" ein?
      _parent hilft nix. Dann wird (1) trotzdem in (2) geöffnet.

      Paul

      1. hi,

        ... Ist dies der Fall, wird das target-Attribut des Formulares per JS gesetzt, was dann beim Absenden des Formulares zum Tragen kommt.

        Genau das will ich. Nur was gebe ich in target="???" ein?
        _parent hilft nix. Dann wird (1) trotzdem in (2) geöffnet.

        _parent bezieht sich ja auch auf Framessets.

        Von einem Popup aus hast du über die window-Instanz opener Zugriff auf das öffnende Fenster. Aber das ist ein Javascript-Objekt, du brauchst aber - für's Zielen mittels target - einen Fensternamen. Wenn das öffnende Fenster noch keinen solchen hat, könntest du also mit opener.name = "xyz" einen solchen vergeben.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. Spitze! Hat geklappt. Danke!

          Paul

        2. Moin nochmal,
          das klappt doch nicht so.

          Ich will die Seite nicht neu laden und alle meine vorher getätigten "Einstellungen" verlieren.
          Ich will nur das Formular der Seite neu abschicken...

          Paul

          1. Moin nochmal,

            Klappt doch, war nur zu blöd *schäm*

  2. Hallo

    Wenn der Begriff aber gefunden wurde, soll sich (1) neu aufbauen. Also muss ich das Formular in (2) so ändern:
    <form name="xxx" method="post" action="(1)" target="???">

    Das ist alles kein Problem. Nur wie kann ich von dem neuen Fenster (2) auf das Ursprungsfenster (1) zugreifen und dieses neu laden?

    Das funktioniert nur mit JavaScript. Und auch nur dann, wenn das Fenster (2) ebenfalls mit JavaScript geöffnet wurde. Dann kannst du mit window.opener auf das Fenster (1) zugreifen.

    Bedenke aber, dass JavaScript beim Benutzer nicht zur Verfügung stehen kann und dass die meisten Browser das Öffnen eines Popups verhindern können. Eventuell ist das Überdenken des Konzepts angesagt.

    Tschö, Auge

    --
    Die Musik drückt aus, was nicht gesagt werden kann und worüber es unmöglich ist zu schweigen.
    (Victor Hugo)
    Veranstaltungsdatenbank Vdb 0.1