将文本插入flex 3 textarea

时间:2009-09-10 11:23:12

标签: flex3 textarea

我有一个textArea和一个列表。当用户双击列表项时,应将所选项的标签插入到textarea中。当在textArea中选择文本时,应该替换它,否则只需要将文本插入到插入点的现有文本中。

我已经设法获取文本和所有内容,我无法将其插入到插入点。有谁知道怎么做?

3 个答案:

答案 0 :(得分:2)

它实际上不是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 :(得分:1)

如果您没有现有的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对象。

答案 2 :(得分:0)

您可以使用txtarea.selectionStart和txtarea.selectionEnd来获取所选文本位置。

之后,删除txt并添加新的选定文本。

我对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支持     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);     } else {         myField.value + = myValue;     }

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

}