Вставить текст в текстовое поле flex 3

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

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


person Maurits de Boer    schedule 10.09.2009    source источник


Ответы (3)


На самом деле это не 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);
person Maurits de Boer    schedule 05.11.2009
comment
Вы когда-нибудь придумывали способ сделать это, не теряя HTML из существующего текста? Я почти уверен, что приведенный выше фрагмент удалит существующий HTML, если таковой имеется. - person Ian Patrick Hughes; 24.09.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 по мере необходимости.

person Ian Patrick Hughes    schedule 23.09.2010

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

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

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

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

Пример кода: function insertAtCursor(myField, myValue) { // Поддержка IE if (document.selection) { myField.focus(); сел = документ.выбор.createRange(); сел.текст = мое значение; } //MOZILLA/NETSCAPE поддерживает else if (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);

}

person Community    schedule 10.09.2009