我知道有类似的问题,但我没有得到答案。
function setTextareaSelection(newText) {
var selText;
newText = "This is a text \n to insert";
var textarea = document.getElementById('textarea');
if (window.getSelection) {
var selText = "";
selText = textarea.value.slice(textarea.selectionStart, textarea.selectionEnd);
var selEnd = textarea.selectionEnd;
var selTextBefore = textarea.value.substring(0, textarea.selectionStart);
var selTextAfter = textarea.value.substring(textarea.selectionEnd, textarea.value.length);
if (selText != "") {
textarea.value = selTextBefore + newText + selTextAfter;
textarea.setSelectionRange(selEnd, selEnd);
}
}
}
我想在插入的文字后放置鼠标光标 仅限Firefox
在线示例: link text
答案 0 :(得分:1)
textarea.setSelectionRange(selTextBefore+newText.length, selTextBefore+newText.length);
答案 1 :(得分:1)
该代码存在问题:为什么在您实际使用它时测试window.getSelection
?这是您需要担心的textarea的selectionStart
和selectionEnd
属性。您应该根据您对几个浏览器的了解来测试您即将使用的功能,而不是完全不相关的功能。
这是一个将在所有主流浏览器中执行此操作的功能,包括IE(至少返回版本5,可能是4)。它也比你现在的要短。我知道你提到你只需要它在Firefox中工作,但其他人可能会发现IE支持很有用。
function pasteIntoInput(el, text) {
el.focus();
if (typeof el.selectionStart == "number"
&& typeof el.selectionEnd == "number") {
var val = el.value;
var selStart = el.selectionStart;
el.value = val.slice(0, selStart) + text + val.slice(el.selectionEnd);
el.selectionEnd = el.selectionStart = selStart + text.length;
} else if (typeof document.selection != "undefined") {
var textRange = document.selection.createRange();
textRange.text = text;
textRange.collapse(false);
textRange.select();
}
}
pasteIntoInput(document.getElementById("yourTextareaId"), "NEW TEXT");
答案 2 :(得分:0)
实际代码
function setTextareaSelection(newText) {
var selText;
newText="This is a text \n to insert" ;
var textarea=document.getElementById('textarea');
if (window.getSelection) {
var selText = "";
selText = textarea.value.slice(textarea.selectionStart, textarea.selectionEnd);
var selEnd = textarea.selectionEnd;
var fromEnd = textarea.value.length - selEnd ;
var selTextBefore = textarea.value.substring(0, textarea.selectionStart);
var selTextAfter = textarea.value.substring(textarea.selectionEnd, textarea.value.length);
if (selText != "") {
textarea.value = selTextBefore + newText + selTextAfter;
var curs = textarea.value.length - fromEnd
textarea.setSelectionRange(curs ,curs );
}
textarea.focus();
}
}