Roger: selektierten text formatieren

moin!

ich muss folgendes machen und habe absolut keinen plan, wie ich ich das fertig bringen soll:
in einer textarea steht bereits text. nun soll man verschiedene textzeilen auswählen können, die nach einem klick auf einen button in eine liste formatiert werden. dabei sollte jede neue zeile (getrennt durch einen zeilenumbruch) in einen listenpunkt (<li></li>) und der komplett ausgewählte block sollte dann von den üblichen <ul></ul>-tags eingegrenzt werden.

über das archiv hatte ich schon mal was brauchbares gefunden, welches man schonmal für die <ul></ul>-tags setzen kann. aber wie kann ich die einzelzeilen dazwischen noch erkennen und die li-tags einfügen?

<html>
<head>
<title>Manipulating the selection in a textarea</title>
<script type="text/javascript">
function formatSelection (textControl, tagName) {
   if (document.selection && document.selection.createRange) {
     var range = document.selection.createRange();
     if (range.parentElement() == textControl) {
       var newSelection = '<' + tagName + '>' + range.text + '</' +
tagName + '>';
       range.text = newSelection;
       range.moveStart('character', -newSelection.length);
       range.select();
     }
   }
   else if (textControl.setSelectionRange) {
     if (textControl.entered) {
       var selectionStart = textControl.selectionStart;
       var newSelection =
 '<' + tagName + '>' +
 textControl.value.substring(textControl.selectionStart,
textControl.selectionEnd) +
 '</' + tagName + '>';
       textControl.value =
         textControl.value.substring(0, textControl.selectionStart) +
         newSelection +
 textControl.value.substring(textControl.selectionEnd,
textControl.value.length);
       textControl.setSelectionRange(selectionStart, newSelection.length

  • selectionStart);
           textControl.focus();
         }
       }
    }
    </script>
    </head>
    <body>
    <form name="formName">
    <textarea name="editArea" rows="5" cols="80"
               onfocus="this.entered = true;">
    Kibology for all.
    All for Kibology.
    </textarea>
    <input type="button" value="bold"
            onclick="formatSelection(this.form.editArea, 'b');">
    </form>
    </body>
    </html>

danke für evtl. tips!

gruß.
roger.

--
Dein eigenes Newslettersystem auf deiner Homepage: http://newsletter.maennchen1.de
  1. moin!

    für's archiv: hab's dann doch selbst hinbekommen. folgende funktion macht das was ich wollte. zwar nur für den ie, aber das reicht mir erst mal:

    function makeList (textControl)
    {
     if (document.selection && document.selection.createRange)
     {
      var range = document.selection.createRange();
      var zeile = range.text.split("\n");
      for(i=0; i < zeile.length; i++)
      {
       zeile[i] = "  <li>"+zeile[i].replace(/\015/,"")+"</li>";
      }
      textControl.value = "<ul>\n"+zeile.join("\n")+"\n</ul>";

    }
    }

    mit nem buttun wird dann die funktion aufgerufen, die dann aus dem markierten text eine liste macht.

    gruß.
    roger.

    --
    Dein eigenes Newslettersystem auf deiner Homepage: http://newsletter.maennchen1.de