Thickbox aus Form Select Feld starten (ohne button!)

janosh75

Mitglied
Ich komme einfach nicht weiter. Gibt hier zwar schon einen ähnlichen Beitrag, nur komme ich damit auch nicht weiter. (Liegt wohl auch an meinen nur gering vorhandenen JS Kentnissen.)

Ich würde gerne aus einem Formular heraus (über ein Select Feld) ein neue Seite in einem Thickbox InlineFrame aufrufen.

Das Formular wird durch onchange="this.form.submit()" abgeschickt.

Unter action habe ich mal dieses Ziel eingegeben: zielseite.php?KeepThis=true&TB_iframe=true&height=400&width=500&modal=true"

Ich weiß, dass ich bei onchange wohl noch zufügen muss.... -nur was ist mir leider schleierhaft.
Ebenso weiß ich nicht, wo ich das class="thickbox" unterbringen muss.

Bitte helft mir!:confused:

Gruß
 
Hi,

ich beziehe mich in meiner Antwort auf diesen Thread und der darin enthaltenen Funktion tb_sendform. Diese wird im onchange-Event mit den entsprechenden Parametern aufgerufen. Anschliessend mit dem von dir geposteten Codefragment abgeschickt.
Code:
<form action="zielseite.php?KeepThis=true&TB_iframe=true&height=400&width=500&modal=true">
  <select name="selWahl" onchange="tb_sendform(this.form, 'Formular in der Thickbox'); this.form.submit();">
    <option value="0">-bitte wählen-</option>
    <option value="1">Eins gewählt</option>
    <option value="2">Zwei gewählt</option>
  </select>
</form>
Ciao
Quaese
 
Hi,

schönen Dank schonmal. Funktioniert aber leider nur teilweise...
Der "loading screen" der Thickbox öffnet sich zwar, schließt sich dann aber wieder und die Zielseite wird ganz normal geladen (ohne Thickbox).

Irgendeine Ahnung woran das liegen könnte?
(Das Form befindet sich auf einer Seite, die durch include auf der Index angezeigt wird. Kann es daran liegen?)
Danke,
Gruß, Jan
 
Hi,

vergleich mal die Schreibweise von "KeepThis=" im action-Attribut mit der in Svens Script-Code, darin lautet die Methode nämlich "keepThis=", und Javascript unterscheidet nunmal strikt zwischen Groß- und Kleinschreibung.

mfg Maik
 
Das Form befindet sich auf einer Seite, die durch include auf der Index angezeigt wird. Kann es daran liegen?

Hab ich eben mal nachgestellt, aber auch dieses Konstrukt funktioniert bei mir einwandfrei.

Zeig mal bitte alle relevanten Quellcodes, damit man sich einen Überblick verschaffen kann, ansonsten werden wir dir nur schwer einen sachdienlichen Hinweis geben können.

mfg Maik
 
Im Prinzip funktioniert es ja. Es öffnet sich der Thickbox loading screen und bleibt geöffnet. Allerdings ohne Inhalt. Die Zielseite wird gleichzeitig in einem neuen fenster geöfffnet.(Form Daten wurden auch übergeben).
Hab den code leider gerade nicht mehr zur Hand. Werde ihn morgen früh mal posten.
Gruß, JAn
 
Hallo nochmal.
Kann es sein, dass der obrige code dafür gedacht ist, innerhalb eines schon geöffneten thickboxfensters ein form abzuschicken?
Das möchte ich nämlich nicht!
Ich möchte von einer ganz "normalen" Seite mit einem form drauf, dass sich beim submit (select onchange) die thickbox öffnet, und die neue Seite (action ziel des forms) in der thickbox öffnet.

Mein bisheriges Form:
HTML:
 <form class="center" id="form1" name="form1" method="post" action="ziel.php">	
    <select class="formcolmid" name="brand" id="brand" onchange=this.form.submit();">
        <option...

Ich habe jetzt diesen code im form folgend geändert :
HTML:
 <form class="center" id="form1" name="form1" method="post" action="ziel.php?keepThis=true&TB_iframe=true&height=400&width=500&modal=true">	
    <select class="formcolmid" name="brand" id="brand" onchange="tb_sendform(this.form, 'form1'); this.form.submit();">
        <option....

und diese function:
HTML:
function tb_sendform(f,c)
{
  f.action.match(/(\bkeepThis=(true|false)&TB_iframe=true.+$)/);
  tb_show(c, 'about:blank?'+RegExp.$1);
  f.target=$('#TB_iframeContent').attr('name')
  return true;
}

Leider öffnet sich nun die ziel.php, wie schon erwähnt, in einem neuen fenster.:confused:
 
Hi,

ich hab deinen Code-Snippet überprüft, und kann den von dir beschriebenen Fehler damit nicht reproduzieren.

Ansonsten bleibe ich bei meiner gestrigen Aussage, dass die unterschiedliche Schreibweise von "keepThis" vs. "KeepThis" eine Fehlerquelle produziert.

Wenn sie nicht übereinstimmen, wird bei mir browserübergreifend das Verweisziel in einem neuen Fenster/Tab, und nicht in der Thickbox geöffnet, stimmen sie überein, läuft bei mir alles wie gewünscht.

mfg Maik
 
Also ich habe jetzt alle Kombinationen von keepThis bzw KeepThis in der function und der Form durch. Immer das selbe Ergebnis: Thickbox loading geht auf, aber die neue seite wird im neuen fenster geöffnet....
HTML:
...........
function tb_sendform(f,c)
{
  f.action.match(/(\bKeepThis=(true|false)&TB_iframe=true.+$)/);
  tb_show(c, 'about:blank?'+RegExp.$1);
  f.target=$('#TB_iframeContent').attr('name')
  return true;
}

//-->
</script>


<div align="center">
    <form class="center" id="form1" name="form1" method="post" action="ziel.php?KeepThis=true&TB_iframe=true&height=400&width=500&modal=true">	
    <select class="formcolmid" name="brand" id="brand" onchange="tb_sendform(this.form, 'form1'); this.form.submit();">
        <option selected="selected">........
Kannst du vielleicht mal dein funktionierendes snippet posten?
 

Neue Beiträge

Zurück