Вставьте текст в flex 3 textarea - PullRequest
2 голосов
/ 10 сентября 2009

У меня есть текстовое поле и список. Когда пользователь дважды щелкает элемент списка, метка выбранного элемента должна быть вставлена ​​в текстовое поле. Когда текст выделен в textArea, его следует заменить, в противном случае текст просто нужно вставить в существующий текст в точке вставки.

Мне удалось получить текст и все остальное, я просто не могу вставить его в точку вставки. Кто-нибудь знает, как это сделать?

Ответы [ 3 ]

2 голосов
/ 05 ноября 2009

На самом деле это не JavaScript, а Adobe Flex 3. Спасибо за помощь, но это подтолкнуло меня в правильном направлении. Вот как это делается в Flex 3:

var caretStart:int = textArea.selectionBeginIndex;
var caretEnd:int = textArea.selectionEndIndex;
textArea.text = textArea.text.substring(0,caretStart)
              + newText
              + textArea.text.substr(caretEnd);
1 голос
/ 24 сентября 2010

Принятый ответ отлично работает, если у вас нет форматирования HTML. В моем случае я вставил в редактор новую кнопку, которую пользователь мог щелкнуть, чтобы ввести ключевое слово. Я продолжал терять все форматирование HTML, пока не начал копаться в реальном классе и не стал объектом TextRange:

       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;

        }

Хорошая особенность этого подхода в том, что вы также можете применять условное форматирование к этому объекту TextRange по мере необходимости.

0 голосов
/ 10 сентября 2009

Вы можете использовать txtarea.selectionStart и txtarea.selectionEnd для получения выбранной позиции текста.

После этого Вы удаляете текст и добавляете новый выделенный текст.

Я мало что знаю о Javascript, поэтому я написал его для U.

Вы можете искать в Google по ключевым словам: "Javascript Selected Text TextArea" «Javascript добавить текст в позиции»

Пример кода: function insertAtCursor (myField, myValue) { // IE поддержка if (document.selection) { myField.focus (); sel = document.selection.createRange (); sel.text = myValue; } // MOZILLA / NETSCAPE поддержка еще если (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); } еще { myField.value + = myValue; }

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

}

...