MyBB.de Forum

Normale Version: Taget = iFrame (Doch wie bestimmt man das Target bei Forms?)
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Ich habe den Shoutbox Form aus dem eigentlichen Template herausgenommen und im Portal und dem Index Template eingefügt.

Darauf gab ich den iFrame den Namen "iframe" und den Aktualisieren Link das Ziel (target) "iframe".

Das klappte bis dahin super... Problem ist nur... wie kann ich den Button und Eingabedialog (also die beiden Forms) verständlich machen das sie nicht die "Shoutbox.php" öffnen sollen, sondern nur beim abschicken den iFrame aktualisieren wenn sie fertig sind?

Code:
<table width="100%" border="0" cellspacing="$theme[borderwidth]" cellpadding="$theme[tablespace]" class="tborder">
<thead>
<tr class="thead">
<td>
<div class="expcolimage"><a href="javascript:expandCollapse('shoutbox');"><img src="$theme[imgdir]/collapse$collapsedimg[shoutbox].gif" id="shoutbox_collapseimg" border="0" alt="[Open/Close]" /></a></div><div><strong>Shoutbox</strong></div>
</td>
</tr>
</thead>
<tbody style="$collapsed[shoutbox_e]" id="shoutbox_e">
<tr><td class="trow1"><iframe src="../forum/shoutbox.php" width="100%" height="250" frameborder="0" name="Shoutbox" marginwidth="0" marginheight="0" align="top" border="0" name="shoutframe"></iframe><br />
<form method="post" action="shoutbox.php">
<input type="hidden" name="action" value="do_add">
<table border="0" cellspacing="{$theme['borderwidth']}" cellpadding="{$theme['tablespace']}" class="tborder">
<tr>
<td class="trow1" align="center">{$lang->shout} <input type="text" name="message" size="40" maxlength="{$mybb->settings['sb_max_length']}"> <input type="submit" name="submit" value="{$lang->add_shout}">
  <span class="smalltext"><a href="shoutbox.php" target="shoutframe"> {$lang->refresh}</a></span>
</td>
</tr>
</table>
</form></td></tr>
</tbody>
</table>

Man sieht ich habe den Refresh Link für meine Shoutbox richtig eingestellt und der funktioniert auch Prima.

Code:
<a href="shoutbox.php" target="shoutframe"> {$lang->refresh}</a>

Doch wie mache ich als Target für die beiden Forms auch den iFrame?
Code:
<form method="post" action="shoutbox.php">
<input type="hidden" name="action" value="do_add">
<table border="0" cellspacing="{$theme['borderwidth']}" cellpadding="{$theme['tablespace']}" class="tborder">
<tr>
<td class="trow1" align="center">{$lang->shout} <input type="text" name="message" size="40" maxlength="{$mybb->settings['sb_max_length']}"> <input type="submit" name="submit" value="{$lang->add_shout}">
  <span class="smalltext">
Vielleicht bringt dich das hier weiter: http://www.tutorials.de/forum/webmaster-...echen.html
Leider Nein, dort wird nur erklärt wie man Links mit Java-Script Routinen füllt, damit sie in anderen Frames Form-Elmente ansprechen... wie in dessen Beispiel die Textbox.

Bei meinem Problem/Wunsch ist es anders, ich möchte es genau andersherum. Denn meine Form-Elemente (Textbox & Abschickbutton) befinden sich im Index Template und sollen wenn gedrückt, nur die Shoutbox (die sich im iFrame versteckt) ansprechen oder die gesamte Seite neuladen wenn er es abgeschickt hat. (wäre ne notlösung)
Ohne Javascript wirst du wohl nicht auskommen, allerdings kann ich dir da nicht helfen, da ich von Javascript kaum Ahnung habe.
Naja von Java Script habe ich leider auch nicht wirklich Ahnung *seufzt*

Hoffentlich kennt sich wer hier damit aus... denn könnte ich es wirklich so machen wäre es genial.
Es muss nicht die gesamte Seite neu geladen werden. Ich hab da eine Lösung für dich:

Code:
<script language="JavaScript">
    function refresh_shoutbox() {
        parent.Shoutbox.location.href = "../forum/shoutbox.php";
    }

    function add_shout() {
        document.forms['add_shout'].submit();
                refresh_shoutbox();
    }
</script>

Der Refreshlink (-button) müsste dann so aussehen:
Code:
<input type="submit" onclick="javascript:refresh_shoutbox();" name="submit" value="{$lang->refresh}">
<a href="shoutbox.php" target="Shoutbox" onclick="javascript:refresh_shoutbox();"> {$lang->refresh}</a>

Zum abschicken des Formulars, welches du noch den Namen "add_shout" geben musst
Code:
<input type="submit" onclick="javascript:add_shout();" name="submit" value="{$lang->add_shout}">
<a href="#" onclick="javascript:add_shout();"> {$lang->add_shout}</a>

Der iFrame selber sollte so aussehen:
Code:
<iframe src="../forum/shoutbox.php" width="100%" height="250" frameborder="0" name="Shoutbox" marginwidth="0" marginheight="0" align="top" border="0">Ihr Browser unterstützt keine (i)Frames!</iframe>

Keine Ahnung ob es funktioniert, aber es sollte eigentlich schon klappen Wink
Es geht auch einfacher.
* Sarah schaut beschämt zur Seite.

Wie eine blöde versuchte ich den target Befehl an <input>-Tags anzuwenden. Naja, in wirklichkeit funktioniert target="shoutframe" dafür aber in <form>-Tags.

Ich weiß... das ist peinlich.
Aber vielen Dank für eure Hilfe.
War mein Fehler. *lieb guck*
Boing, typisch Frauen. Nun gut, was soll man den machen? Mir geht es auch oft so das ich Tage später den einfacheren Weg wähle Wink