Frage

Ich habe ein Textfeld und eine Liste. Wenn ein Benutzer einen Doppelklick auf ein Listenelement klickt, sollte das Etikett des ausgewählten Elements in das Textfeld eingefügt werden. Wenn ein Text in dem Textfeld ausgewählt wird, sollte es ersetzt werden, sonst wird der Text nur in den bestehenden Text am Einfügezeichenpunkt eingefügt werden muss.

Ich habe es geschafft, den Text und alles zu bekommen, ich kann einfach nicht schaffen es am Einfügezeichenpunkt einzufügen. Wer weiß, wie dies zu tun?

War es hilfreich?

Lösung

Es ist eigentlich nicht JavaScript, aber Adobe Flex 3. Danke für die Hilfe, obwohl es mich in der richtigen Richtung drücken hat. Dies ist die Art und Weise seines in Flex getan 3:

var caretStart:int = textArea.selectionBeginIndex;
var caretEnd:int = textArea.selectionEndIndex;
textArea.text = textArea.text.substring(0,caretStart)
              + newText
              + textArea.text.substr(caretEnd);

Andere Tipps

Die akzeptierte Antwort funktioniert gut, wenn Sie nicht vorhandene HTML-Formatierung haben. In meinem Fall habe ich eingefügt eine neue Schaltfläche in den Editor, dass der Benutzer in einem Schlüsselwort setzen klicken konnte. Ich hielt all HTML-Formatierung zu verlieren, bis ich um in der aktuellen Klasse gegraben und einseitig mit einem Textrange-Objekt:

       public function keyWord_Click(event:Event) : void 
        {

            var caretStart:int = txtEditor.textArea.selectionBeginIndex;
            var caretEnd:int = txtEditor.textArea.selectionEndIndex;
            var newText : String = "[[[KEYWORD]]]";

            var tf:TextRange = new TextRange(txtEditor,true,caretStart,caretEnd);
            tf.text = newText;

        }

Das Schöne an diesem Ansatz ist, können Sie auch die bedingte Formatierung in diesem Textrange-Objekt gelten je nach Bedarf.

Sie können mit txtarea.selectionStart und txtarea.selectionEnd zu ausgewählter Textposition erhalten.

Danach werden Sie txt löschen und neu ausgewählten Text.

Ich weiß nicht viel über Javascript bekannt, so schrieb ich es für U.

Sie können mit Keywords auf Google-Suche: „Javascript Ausgewählten Text TextArea-“ "Javascript mit Text, Position"

Beispielcode: Funktion insertAtCursor (myField, myValue) {     // IE-Unterstützung     if (document.selection) {     myField.focus ();     sel = document.selection.createRange ();     sel.text = myValue;     }     // MOZILLA / NETSCAPE Unterstützung     wenn andere (myField.selectionStart || myField.selectionStart == '0') {         var startPos = myField.selectionStart;         var endPos = myField.selectionEnd;         myField.value myField.value.substring = (0, startPos)         + myValue         + MyField.value.substring (endPos, myField.value.length);     } Else {         myField.value + = myValue;     }

caretPos = doGetCaretPosition(myField);
alert(caretPos);
setCaretPosition(myField,caretPos-3);

}

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top