使用过博客园评论功能的人都知道,点击回复,光标会移到文本框里并在文本框加入@XXX;点击引用,在文本框加入@XXX跟回复的内容。
这里我想实现的就是光标移动并向textarea加入文字
第一步:点击加入文字(假设已得到用户名张三、李四)
先看效果:(点击回复)
代码
<style>
.pointer {
margin-left: 50px;
cursor: pointer;
color: #ffa800;
}
</style>
<script type="text/javascript">
function insert(con)
{var _abc=document.getElementById('reply_text').value;
_abc=_abc+con;
document.getElementById('reply_text').value=_abc
}
</script>
一楼:张三<a class="pointer" onclick="insert('@张三\n')">回复<a/><br><br>
二楼:李四<a class="pointer" onclick="insert('@李四\n')">回复<a/><br><br>
<textarea id="reply_text" rows="5" cols="20"></textarea>
第二步:点击移动光标
代码:
<a onclick="moveEnd(reply_text)">移动光标</a>
<textarea id="reply_text" rows="5" cols="20"></textarea>
<script>
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;
}
}
</script>
加在一起后的效果:(点击回复)
全部代码:
<style>
.pointer {
margin-left: 50px;
cursor: pointer;
color: #ffa800;
}
</style>
<script type="text/javascript">
function insert(con)
{var t=document.getElementById('reply_text').value;
t=t+con;
document.getElementById('reply_text').value=t
}
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;
}
}
</script>
一楼:张三<a class="pointer" onclick="insert('@张三\n'),moveEnd(reply_text)">回复<a/><br><br>
二楼:李四<a class="pointer" onclick="insert('@李四\n'),moveEnd(reply_text)">回复<a/><br><br>
<textarea id="reply_text" rows="5" cols="20"></textarea>
来源:https://www.cnblogs.com/ljmin/archive/2012/07/25/2607540.html