Jörg Reinholz: Kleiner logischer Fehler, Ergänzung

Beitrag lesen

Moin!

Wie der Titel schon sagt ist eine Fehlerkorrektur notwendig und eine Ergänzung angebracht:

<html>
<head>
<title>Einfügen von bb-Code in mehrere Textareas</title>
<script type="text/javascript">
var AktivArea;
function bb_insert(bb) {
    var bb_start = '[' + bb + ']';
    var bb_end   = '[/' + bb + ']';
    var tStart = AktivArea.selectionStart;
    var tEnd = AktivArea.selectionEnd;
    var insText = AktivArea.value.substring(tStart, tEnd);
    // Korrektur: bb_start und bb_end waren falsch herum:
    var newText = AktivArea.value.substr(0, tStart) + bb_start + insText + bb_end + AktivArea.value.substr(tEnd);
    AktivArea.value = newText;
    AktivArea.focus();
    // Ergänzung: Setzen der Auswahl:
    if (0 > AktivArea.selectionEnd - AktivArea.selectionStart) {
        AktivArea.selectionEnd = tEnd + 6 + bb.length;
    } else {
        AktivArea.selectionStart = tStart + 2 + bb.length;
        AktivArea.selectionEnd = AktivArea.selectionStart;
    } 
    // Ende der Ergänzung
    return false;
}
</script>
</head>
<body>
  <h1>Demo: Einfügen von bb-Code in meherere Textareas</h1>
  <form name="formular" action="">
    <button onclick="return bb_insert('b');">bold</button><button onclick="return bb_insert('i')">italic</button></b><br>

    <textarea id="a1" onfocus="AktivArea=this;"></textarea><br>
    <textarea id="a2" onfocus="AktivArea=this;"></textarea>
  </form>
</body>
</html>

Jörg Reinholz