Tommy: Nach Einfügen von BBCode Wort markiert lassen

Hi,

ist es bei diesem Script möglich, dass ein Wort, markiert bleibt, nachdem der BBCode eingefügt wurde? Irgendwo muss ja gesagt werden, dass der Cursor (so wie es jetzt ist) nach dem Einfügen am Ende stehen soll.

Ich hätte aber gern, dass das Wort markiert bleibt, damit man es z.B. gleich mit einem anderen Code umschließen kann.

  1. Hallo,

    ist es bei diesem Script möglich, dass ein Wort, markiert bleibt, nachdem der BBCode eingefügt wurde?

    Ja.

    Wenn du dir das Script mal anschaust, wirst du Abschnitte finden, die bereits für die Markierung bzw. die Cursorposition zuständig sind. Die kannst du nach dem bereits demonstriertem Schema anpassen.

        /* Anpassen der Cursorposition */  
        range = document.selection.createRange();  
        if (insText.length == 0) {  
          range.move('character', -eTag.length);  
        } else {  
          range.moveStart('character', aTag.length);  
          range.moveEnd('character', -eTag.length);  
        }  
        range.select();
    

    sowie

        /* Anpassen der Cursorposition */  
        var startPos, endPos;  
        if (insText.length == 0) {  
          startPos = endPos = start + aTag.length;  
        } else {  
          startPos = start + aTag.length;  
          endPos = startPos + insText.length;  
        }  
        input.selectionStart = startPos;  
        input.selectionEnd = endPos;
    

    Außerdem müsstest du die Abfrage, welche Methode gewählt wird. Opera kennt nämlich sowohl createRange als auch selectionStart/selectionEnd umkehren, aber die Auswahl ist eine andere beim Einfügen der Codes (im IE ist der gesamt Text der Range markiert, im Opera liegt der Cursor hinter dem Range-Text ohne Markierung).

    if (typeof input.selectionStart != 'undefined') {  
       ... arbeite mit selectionStart und selectionEnd  
    } else if (typeof document.selection != 'undefined') {  
       ... Nutze das Microsoft-Modell der Ranges  
    }
    

    Mathias