Вставить текст в текстовую область flex 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);
Другие советы
Принятый ответ отлично работает, если у вас нет существующего 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 по мере необходимости.
Вы можете использовать txtarea.SelectionStart и txtarea.selectionEnd для получения позиции выделенного текста.
После этого Вы удаляете текстовый текст и добавляете новый выделенный текст.
Я мало что знаю о Javascript, поэтому написал его для U.
Вы можете выполнить поиск в Google по ключевым словам:"Текстовая область выделенного текста Javascript" "Javascript добавляет текст в нужное положение"
Пример кода:функция insertAtCursor(MyField, myValue) { // Поддержка IE if (document.selection) { MyField.focus();sel = document.selection.createRange();sel.text = Мое значение;} /поддержка MOZILLA/NETSCAPE иначе, если (MyField.SelectionStart || MyField.SelectionStart == '0') { var startPos = Мое поле.SelectionStart;var endPos = Мое поле.selectionEnd;MyField.value = MyField.value.substring(0, начальный код) + myValue + MyField.value.substring(конечный код, MyField.value.длина);} else { MyField.value += Мое значение;}
caretPos = doGetCaretPosition(myField);
alert(caretPos);
setCaretPosition(myField,caretPos-3);
}