zoukankan      html  css  js  c++  java
  • 博客园评论(回复、引用)的实现

    使用过博客园评论功能的人都知道,点击回复,光标会移到文本框里并在文本框加入@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>
  • 相关阅读:
    Python之实现一个优先级队列
    java可变参数列表的实现
    static 关键字详解 static方法调用非static属性和方法
    this关键字详解
    vue自定义事件 子组件把数据传出去
    vue组件 Prop传递数据
    Vue 什么是组件
    vue v-model 表单控件绑定
    vue v-on监听事件
    vue v-if with v-for
  • 原文地址:https://www.cnblogs.com/ljmin/p/2607540.html
Copyright © 2011-2022 走看看