如何在textarea的光标位置插入文字

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在textarea的光标位置插入文字相关的知识,希望对你有一定的参考价值。

参考技术A 代码如下:

function insertText(obj,str)
if (document.selection)
var sel = document.selection.createRange();
sel.text = str;
else if (typeof obj.selectionStart === 'number' && typeof obj.selectionEnd === 'number')
var startPos = obj.selectionStart,
endPos = obj.selectionEnd,
cursorPos = startPos,
tmpStr = obj.value;
obj.value = tmpStr.substring(0, startPos) str tmpStr.substring(endPos, tmpStr.length);
cursorPos = str.length;
obj.selectionStart = obj.selectionEnd = cursorPos;
else
obj.value = str;


function moveEnd(obj)
obj.focus();
var len = obj.value.length;
if (document.selection)
var sel = obj.createTextRange();
sel.moveStart('character',len);
sel.collapse();
sel.select();
else if (typeof obj.selectionStart == 'number' && typeof obj.selectionEnd == 'number')
obj.selectionStart = obj.selectionEnd = len;

本回答被提问者和网友采纳

textarea 光标插入文字

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<meta charset="utf-8" />
<head>
<title></title>
</head>
<body>

<textarea id="test" />改个需求。</textarea>
<input type="button" onclick="tt(‘呵呵‘)" value="aa" />
<script type="text/javascript">
    function tt(val) {
    var val = val;
    var test = document.getElementById(‘test‘);
    if(document.selection) { //ie 8,9,10
    test.focus();
    sel = document.selection.createRange();
    sel.text = val;
    test.focus();
} else {
    if(test.selectionStart || test.selectionStart == ‘0‘) { //光标开始的位置
    var startPos = test.selectionStart;
    var endPos = test.selectionEnd;
    var scrollTop = test.scrollTop;
    console.log(startPos)
    test.value = test.value.substring(0, startPos) + val + test.value.substring(endPos, test.value.length);
    test.focus();
    test.selectionStart = startPos + val.length; //设置鼠标开始位置
    test.selectionEnd = startPos + val.length; //设置鼠标结束位置
    test.scrollTop = scrollTop; //插入的文字显示在滚动条内
    } else {
    test.value += val;
    test.focus();
    }
}
}
</script>

</body>

</html>

可参考 https://blog.csdn.net/mafan121/article/details/78519348

以上是关于如何在textarea的光标位置插入文字的主要内容,如果未能解决你的问题,请参考以下文章

jQuery textarea - 插入模式光标位置

如何在 textarea 文本更改上保留光标位置?

jQuery获取textarea光标/插入符号X,Y位置并在下面显示一个DIV

自动提交后如何将光标保持在 textarea 中的位置?

textarea 光标插入文字

如何从 GWT 中的 RichTextArea 获取光标位置或位置?