PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : BBCode für mehre Textareas


DiJae
18.03.2004, 15:55:35
Moin moin,

wie kann ich BBCode für mehrere Texareas verwenden? Wenn ich mir als Javascript-Laie (Kaumkenner) die Quellcode kopiere, kann ich ihn immer für eine Textarea verwenden, wenn ich diese als 'message' bezeichne und das Formual als 'bbform'. Ich würde aber in manchem Formular gerne zwei oder mehr Textareas verwenden. Meine unerfahrenen Versuche, den Quellcode dahingehend zu ändern, haben leider nichts außer Fehlermeldungen produziert...

lindic
19.03.2004, 10:04:49
Moin!

Ist ganz einfach, auch für Laien:

Jedes Formular hat einen Namen und jedes Textarea hat auch einen Namen. In JavaScript sprichst du dann die Textarea so an:
document.NAME_DES_FORMULARS.NAME_DER_TEXRAREA.value
D.h. du musst jetzt nur die beiden Namen richtig austauschen und dann sollte es gehen.

Eleganter wäre es natürlich, das JavaScript für alle Textareas zu verwenden, anstatt tausend Kopien davon zu machen. Aber das kommt beim nächsten Mal dran... ;-)

Gruß,
lindic

DiJae
19.03.2004, 10:22:46
Genau das habe ich versucht. Aber das funktioniert leider nicht.

Marilu
19.03.2004, 10:42:36
Zeig doch mal ein wenig Quellcode. Dann kann man vielleicht einfacher raten...

DiJae
19.03.2004, 10:53:33
Ich poste den später, da ich das Problem auf der Arbeit bearbeite und den Quellcode zuhause nicht zur Verfügung habe.

DiJae
19.03.2004, 15:27:10
Javascript in Datei 'bbcode.js'


// *******************************************************
// Sprache ***********************************************
// *******************************************************
tag_prompt = "Gebe einen Text ein:";
font_formatter_prompt = "Gebe einen Text ein - ";
link_text_prompt = "Gebe einen Linknamen ein (optional)";
link_url_prompt = "Gebe die volle Adresse des Links ein";
link_email_prompt = "Gebe eine Email Adesse ein";
list_type_prompt = "was für eine Liste möchtest du? Gebe '1' ein für eine nummerierte Liste, 'a' für ein alphabetische, oder gar nichts für eine einfache Punktliste.";
list_item_prompt = "Gebe eine Listepunkt ein.nGebe nichts ein oder drücke 'Cancel' um die Liste fertigzustellen.";
// *******************************************************

tags = new Array();

function getarraysize(thearray) {
for (i = 0; i < thearray.length; i++) {
if ((thearray[i] == "undefined") || (thearray[i] == "") || (thearray[i] == null)) return i;
}
return thearray.length;
}

function arraypush(thearray,value) {
thearraysize = getarraysize(thearray);
thearray[thearraysize] = value;
}

function arraypop(thearray) {
thearraysize = getarraysize(thearray);
retval = thearray[thearraysize - 1];
delete thearray[thearraysize - 1];
return retval;
}

// *******************************************************



function normalmode(theform) {
return true;
}

function setfocus(theform) {
theform.message.focus();
}

function closetag(theform) {
if (!normalmode(theform)) {
if (tags[0]) theform.message.value += "[/"+ arraypop(tags) +"]";
}
setfocus(theform);
}

function closeall(theform) {
if (!normalmode(theform)) {
if (tags[0]) {
while (tags[0]) {
theform.message.value += "[/"+ arraypop(tags) +"]";
}
theform.message.value += " ";
}
}
setfocus(theform);
}

// *******************************************************
var selectedText = "";
AddTxt = "";

function getActiveText(msg) {
selectedText = (document.all) ? document.selection.createRange().text : document.getSelection();
if (msg.createTextRange) msg.caretPos = document.selection.createRange().duplicate();
return true;
}

function AddText(NewCode,theform) {
if (theform.message.createTextRange && theform.message.caretPos) {
var caretPos = theform.message.caretPos;
caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? NewCode + ' ' : NewCode;
} else theform.message.value+=NewCode
AddTxt = "";
setfocus(theform);
}

function bbcode(theform,bbcode,prompttext) {
setfocus(theform);
if ((normalmode(theform)) || (bbcode=="IMG")) {
if (selectedText){
var dtext=selectedText;
}else{
var dtext=prompttext;
}
inserttext = prompt(tag_prompt+"n["+bbcode+"]xxx[/"+bbcode+"]",dtext);
if ((inserttext != null) && (inserttext != "")) {
AddTxt = "["+bbcode+"]"+inserttext+"[/"+bbcode+"] ";
AddText(AddTxt,theform);
}
}else {
donotinsert = false;
for (i = 0; i < tags.length; i++) {
if (tags[i] == bbcode) donotinsert = true;
}
if (!donotinsert) {
theform.message.value += "["+bbcode+"]";
arraypush(tags,bbcode);
}
}
setfocus(theform);
}

// *******************************************************

function namedlink(theform,thetype) {
if (selectedText) { var dtext=selectedText; } else { var dtext=""; }
linktext = prompt(link_text_prompt,dtext);
var prompttext;
if (thetype == "URL") {
prompt_text = link_url_prompt;
prompt_contents = "http://";
}
else {
prompt_text = link_email_prompt;
prompt_contents = "";
}
linkurl = prompt(prompt_text,prompt_contents);
if ((linkurl != null) && (linkurl != "")) {
if ((linktext != null) && (linktext != "")) {
AddTxt = "["+thetype+"="+linkurl+"]"+linktext+"[/"+thetype+"] ";
AddText(AddTxt,theform);

}
else{
AddTxt = "["+thetype+"]"+linkurl+"[/"+thetype+"] ";
AddText(AddTxt,theform);

}
}
}

// *******************************************************

function dolist(theform) {
listtype = prompt(list_type_prompt, "");
if ((listtype == "a") || (listtype == "1")) {
thelist = "n";
listend = "[/list="+listtype+"] ";
}
else {
thelist = "[list]n";
listend = " ";
}
listentry = "initial";
while ((listentry != "") && (listentry != null)) {
listentry = prompt(list_item_prompt, "");
if ((listentry != "") && (listentry != null))
thelist = thelist+" "+listentry+"n";
}
AddTxt = thelist+listend;
AddText(AddTxt,theform);

}


HTML Teil


<script language="Javascript" src="{ABSOLUTEPATH}javascript/bbcode.js"></script>
<form action="{ABSOLUTEPATH}{A}/{B}/{C}/databases,admin,db_form/" method="post" name="bbform">
<br /><br />
<p>Text der News:<span class="obligatory">*</span></p>
<br />
<!-- BBCODE für 'message' -->
<img src="{ABSOLUTEPATH}images/bbcode_bold.gif" alt="fettgedruckter Text" border="0" onclick="bbcode(document.bbform,'B','')" class="clsCursor">
<img src="{ABSOLUTEPATH}images/bbcode_italic.gif" alt="kursiver Text" border="0" onclick="bbcode(document.bbform,'I','')" class="clsCursor">
<img src="{ABSOLUTEPATH}images/bbcode_url.gif" alt="Hyperlink einf&uuml;gen" border="0" onclick="namedlink(document.bbform,'URL')" class="clsCursor">
<img src="{ABSOLUTEPATH}images/bbcode_email.gif" alt="eMail-Adresse einf&uuml;gen" border="0" onclick="namedlink(document.bbform,'EMAIL')" class="clsCursor">
<img src="{ABSOLUTEPATH}images/bbcode_quote.gif" alt="Lexem einf&uuml;gen" border="0" onclick="bbcode(document.bbform,'LEXEME','')" class="clsCursor">

<br />
<textarea class="text_field" type="text" name="message" onChange=getActiveText(this) onclick=getActiveText(this) onFocus=getActiveText(this)>{NEWSTEXT}</textarea>
</form>