Alex: Einfügen von Code in Textarea an Curserpoition/Markierung

Beitrag lesen

Nochmal hallo,

bevor der Thread im Archiv verschwindet, hier meine Lösung (funktioniert mit Netscape/Mozilla, IE):

http://alex.ilosuna.org/test/textarea.html

Grüße, Alex

P.S.: falls der Link mal nicht mehr existieren sollte:

<html>
<head>
<script type="text/javascript">
<!--
function bbcode(v)
 {
 if (document.selection) // für IE
   {
    var str = document.selection.createRange().text;
    document.form_name.textarea_name.focus();
    var sel = document.selection.createRange();
    sel.text = "[" + v + "]" + str + "[/" + v + "]";
    return;
   }
  else if (document.getElementById && !document.all) // für Mozilla
   {
    var txtarea = document.forms['form_name'].elements['textarea_name'];
    var selLength = txtarea.textLength;
    var selStart = txtarea.selectionStart;
    var selEnd = txtarea.selectionEnd;
    if (selEnd == 1 || selEnd == 2)
    selEnd = selLength;
    var s1 = (txtarea.value).substring(0,selStart);
    var s2 = (txtarea.value).substring(selStart, selEnd)
    var s3 = (txtarea.value).substring(selEnd, selLength);
    txtarea.value = s1 + '[' + v + ']' + s2 + '[/' + v + ']' + s3;
    return;
   }
  else input('[' + v + '][/' + v + '] ');
 }

function input(what)
 {
  if (document.form_name.textarea_name.createTextRange)
   {
    document.form_name.textarea_name.focus();
    document.selection.createRange().duplicate().text = what;
   }
  else if (document.getElementById && !document.all) // Mozilla
   {
    var tarea = document.forms['form_name'].elements['textarea_name'];
    var selEnd = tarea.selectionEnd;
    var txtLen = tarea.value.length;
    var txtbefore = tarea.value.substring(0,selEnd);
    var txtafter =  tarea.value.substring(selEnd, txtLen);
    tarea.value = txtbefore + what + txtafter;
   }
  else
   {
    document.entryform.text.value += what;
   }
 }
//-->
</script>
<title>Textarea-Test</title>
</head>
<body>
<h1>Einfügen von BB-Code und Smilies mit JavaScript</h1>
<p>Funktionoert mit Netscape/Mozilla und IE. Hier werden die BB-Codes um
markierten Text eingefügt und die Smilies an der Curserposition. Mit anderen
Browsern werden die Befehle am Ende eingefügt.</p>
<form name="form_name" action="" method="">
BB-Code:
[ <a href="javascript:bbcode('b');">fett</a> ] 
[ <a href="javascript:bbcode('i');">kursiv</a> ] 
[ <a href="javascript:bbcode('url');">URL</a> ] 
[ <a href="javascript:bbcode('img');">Bild</a> ]  
Smilies:
[ <a href="javascript:input(':-) ');">smile</a> ] 
[ <a href="javascript:input(';-) ');">wink</a> ] 
[ <a href="javascript:input(':-( ');">frown</a> ]<br>
<textarea rows="20" cols="80" name="textarea_name"></textarea><br>
<input type="reset">
</form>
</body>
</html>