我有一个textArea和一个列表。当用户双击列表项目时,所选项目的标签应插入到textarea中。在textArea中选择文本时,应该替换它,否则只需将文本插入到插入点的现有文本中。插入文本到flex 3 textarea
我已经设法得到文本和一切,我只是无法设法插入它的插入点。有谁知道如何做到这一点?
我有一个textArea和一个列表。当用户双击列表项目时,所选项目的标签应插入到textarea中。在textArea中选择文本时,应该替换它,否则只需将文本插入到插入点的现有文本中。插入文本到flex 3 textarea
我已经设法得到文本和一切,我只是无法设法插入它的插入点。有谁知道如何做到这一点?
它实际上不是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);
您可以使用txtarea.selectionStart和txtarea.selectionEnd来获取选定的文本位置。
之后,您删除txt并添加新的选定文本。
我不知道太多关于JavaScript的,所以我写了它U.
你可以用关键字在谷歌搜索: “的Javascript所选文本的TextArea” “的Javascript在位置添加文本”
示例代码: function insertAtCursor(myField,myValue){ // IE支持 if(document.selection){0} {0} {0} {0} myField.focus(); sel = document.selection.createRange(); sel.text = myValue; (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);
}
如果您没有现有的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对象。
谢谢装人!我浪费了两天的时间寻找这个修复! – 2017-05-03 23:24:15
有没有想办法做到这一点,而不会丢失现有文本的HTML?我非常肯定,如果有的话,上面的代码片段会剥离现有的HTML。 – 2010-09-23 23:07:09
没关系。我只是想出了一个办法。我会在下面发帖... – 2010-09-23 23:24:29