BBCode mit 2 Textareas

NRGyzer

Mitglied
Hi!

Ich hab in mein Newssystem gerade den BBcode eingebaut. Ich habe zwei textareas (text, text_long). Und natürlich die Buttons für den BBCode.

Ein Beispiel: Button für fetten Text
PHP:
echo "<input type=\"button\" name=\"[b]\" title=\"Fett\" value=\" B \" onClick=\"javascript:setcode('B','')\">";

diese Funktion wird aufgerufen:
Code:
function setcode(code,prompttext) {
		inserttext = prompt("Zu formatierenden Text eingeben:"+"\n",prompttext);
		if ((inserttext != null) && (inserttext != ""))
		document.posting.text.value += "["+code+"]"+inserttext+"[/"+code+"] ";
	document.posting.text.focus();
}

Dieser Text wird dann immer in die Textarea namens "text" eingefügt.

meine Frage dazu: Wie kann man es realisieren dass der BBCode in jene textarea eingefügt, die gerade bearbeitet wird?

Es würde zwar gehen in dem ich den Code einfach doppelt schreibe (also alle Buttons, Funktionen, etc... doppelt), aber es muss doch eine einfachere Variante geben!?
 
Hallo....

du könntest beim onfocus() eines<textarea>'s dieses jeweils als Objekt in einer Variablen speichern...
anhand dieser kannst du dann ermitteln, in welchem Textfeld sich der Cursor befindet bzw. zuletzt befunden hat.
 
könntest du hier vielleicht ein kleines Beispiel reinschreiben? Ich kenn mich mit Javascript nämlich nicht wirklich aus :(
 
Code:
var sActiveArea = 'text';

function setcode(code,prompttext) {
    inserttext = prompt("Zu formatierenden Text eingeben:"+"\n",prompttext);
    if ((inserttext != null) && (inserttext != ""))
    window.document.forms['posting'].elements[sActiveArea].value += "["+code+"]"+inserttext+"[/"+code+"] ";
    window.document.forms['posting'].elements[sActiveArea].focus();
}

[...]

<textarea name="text" onfocus="sActiveArea = this.name;"></textarea>

<textarea name="text_long" onfocus="sActiveArea = this.name;"></textarea>
 
Sorry für die dumme Frage aber wie soll das denn mit den Buttons funktionieren, also was muss ich da denn ranhängen,. damit ['b'] z.B. in der Textarea erscheint?

Zur Zeit habe ich das so:

Code:
<form onfocus="sActiveArea = this.name;" action="" name="text"> 
   <INPUT type="button" onclick="javascript:setcode('b');" value="b" />   
<textarea rows="30" cols="50" name="text"></textarea><br>  
</form>

Aber da kommt immer nur nen Prompt mit "undefined" drin. :(
 
Code:
<input type="button" onclick="setcode('b', '');" />
Der zweite Parameter bestimmt den Text, der als Vorgabe im Propt erscheinen soll. Am einfachsten also nichts.
 
Hallo danke. Aber das Textfeld bleibt immer noch lehr.
Code:
<form onfocus="sActiveArea = this.name;" action="" name="text"> 
   <INPUT type="button" onclick="java script:setcode('b', '');" value="b" />   
<textarea rows="30" cols="50" name="text"></textarea><br>  
</form>
 
Hier kannst du die onfocus-Sache weglassen, da du ja nur eine Textarea hast.

So geht es z.B.
Code:
function setCode(a_sTagName)
{
    sInput = prompt('Bitten den Text eingeben, der formatiert werden soll:', '');

    if ((sInput != null) && (sInput != '')) {
        window.document.forms['TextForm'].elements['TextField'].value += '[' + a_sTagName + ']' + sInput + '[/' + a_sTagName + ']';
    }
}

[...]

<form name="TextForm">
  <input type="button" onclick="setCode('b');" />
  <br />
  <br />
  <textarea name="TextField"></textarea>
</form>
Ps: Am Besten dem Eingabefeld und dem Formular nicht die gleichen Namen geben, das gibt sonst nur Verwirrung.
 

Neue Beiträge

Zurück