Hab die Funktion jetzt nochmal etwas verschlankt. Man übergibt jetzt außerdem auch noch den Formularnamen und den Textareanamen an die Funktion. Spart nochmal ein bissel Schreibkram in der HTML.
Code: Alles auswählen
function insert_text(text, formularbezeichnung, textfeldbezeichnung)
{
var textarea;
form_name = formularbezeichnung;
text_name = textfeldbezeichnung;
textarea = document.forms[form_name].elements[text_name];
if (!isNaN(textarea.selectionStart))
{
var sel_start = textarea.selectionStart;
var sel_end = textarea.selectionEnd;
mozWrap(textarea, text, '')
textarea.selectionStart = sel_start + text.length;
textarea.selectionEnd = sel_end + text.length;
}
else if (textarea.createTextRange && textarea.caretPos)
{
if (baseHeight != textarea.caretPos.boundingHeight)
{
textarea.focus();
storeCaret(textarea);
}
var caret_pos = textarea.caretPos;
caret_pos.text = caret_pos.text.charAt(caret_pos.text.length - 1) == ' ' ? caret_pos.text + text + ' ' : caret_pos.text + text;
}
else
{
textarea.value = textarea.value + text;
}
}
Allerdings blick ich noch nicht ganz durch, was da eigentlich genau passiert. Es wird ja der Textbaustein immer ans Ende des Feldes eingefügt. Kriegt man das auch irgendwie so umgemodelt, daß er es an die aktuelle Curserposition im Textfeld einfügt?
EDIT:
Hab jetzt noch was besseres gefunden: (funzt allerdings nur für IE)
Code: Alles auswählen
//Tags einfügen um markierten Bereich
function insert_tags(aTag, eTag, formularbezeichnung, textfeldbezeichnung) {
form_name = formularbezeichnung;
text_name = textfeldbezeichnung;
var input = document.forms[form_name].elements[text_name];
input.focus();
/* für Internet Explorer */
if(typeof document.selection != 'undefined') {
/* Einfügen des Formatierungscodes */
var range = document.selection.createRange();
var insText = range.text;
range.text = aTag + insText + eTag;
/* Anpassen der Cursorposition */
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();
}
}
//text an Curserposition einfügen
function insert_text_into(text, formularbezeichnung, textfeldbezeichnung) {
form_name = formularbezeichnung;
text_name = textfeldbezeichnung;
var input = document.forms[form_name].elements[text_name];
input.focus();
/* für Internet Explorer */
if(typeof document.selection != 'undefined') {
/* Einfügen des Formatierungscodes */
var range = document.selection.createRange();
var insText = range.text;
range.text = text + insText;
/* Anpassen der Cursorposition */
range = document.selection.createRange();
range.moveStart('character', text.length + insText.length);
range.select();
}
}
Die Kommentarzeilen über den Funktionen sprechen denke ich für sich. Der Aufruf in der HTML sieht dann so aus:
Code: Alles auswählen
<input type="button" value="Einfügen_um_Markierung" onClick="insert_tags('[link]', '[/link]', 'eingabeformular', 'textbox')">
<input type="button" value="Einfügen_an_Curserposition" onClick="insert_text_into('TEXTBAUSTEIN', 'eingabeformular', 'textbox')">