zur Info: BBCode der nicht umgewandelt werden soll vom Forum hab ich mit ner Leertaste gemacht z.B. [ b][/b]
Soar hier mal nen Auszug aus meinem BBCode. In dem Beispiel wäre es für die Schriftgröße also der BBCode [ size=12]Text in 12px[/size].
bbcode_dropdown braucht als ersten Parameter den Namen vom Textfeld also <textarea name="text_feld_name"></textarea> z.B. dass hat den Sinn das ich die Funktion auch theoretisch zwei mal pro Seite hernehmen könnte und halt zwei verschiedene Textareas mit unterschiedlichen Namen.
Der zweite Parameter ist die ID vom <select> damit später auch die richtigen Werte ausgelesen werden. und dann eben der Anfangstag bis dahin wo der Value vom <select> hingehört dann vom Value bis dahin wo der Courser sitzen soll und dann noch das Endtag also [/size] in dem Falle.
Dat ist eigentlich schon alles. bbcode_dropdown liest dann des Value vom Dropdown aus und schreibt es per bbcode() in die Textarea. bbcode() setzt den BBCode dort hin wo der Courser ist und setzt den Courser genau zwischen [size=xx] hier [/size] also dazwischen.
Da gibts dann noch andere Funktionen die ich habe die auch auf bbcode() zugreifen also z.B. von nem normalen Button.
Code:
<select id="bbcode_size" size="1" onchange="bbcode_dropdown('text_feld_name', 'bbcode_size', '[size=', ']', '[/size]')" style="width: 100px; margin-bottom: 5px">
<option value="11">11px</option>
<option value="12">12px</option>
</select>
Und das JS Zeugs:
Code:
function bbcode_dropdown(textarea_name, dropdown_name, aTag1, aTag2, eTag) {
var aTag = aTag1 + document.getElementById(dropdown_name).value + aTag2;
bbcode(textarea_name, aTag, eTag);
}
function bbcode(textarea_name, aTag, eTag) {
var input = document.getElementById(textarea_name);
input.focus();
if(typeof document.selection != 'undefined') {
var range = document.selection.createRange();
var insText = range.text;
range.text = aTag + insText + eTag;
range = document.selection.createRange();
if (insText.length == 0) {
range.move('character', -eTag.length);
} else {
range.moveStart('character', aTag.length + insText.length + eTag.length);
}
range.select();
} else if(typeof input.selectionStart != 'undefined') {
var start = input.selectionStart;
var end = input.selectionEnd;
var insText = input.value.substring(start, end);
input.value = input.value.substr(0, start) + aTag + insText + eTag + input.value.substr(end);
var pos;
if (insText.length == 0) {
pos = start + aTag.length;
} else {
pos = start + aTag.length + insText.length + eTag.length;
}
input.selectionStart = pos;
input.selectionEnd = pos;
} else {
var pos = input.value.length;
input.value += aTag + eTag;
}
}
Und wenn du noch nen normalen Button haben möchtest als BBCode hier das HTML z.B. für [ b]courser[/b]