论坛贴子列表里 点一下那个 回复它 就会@会员名到下面的回复编辑器里

论坛贴子列表里 点一下那个 回复它 就会@会员名到下面的回复编辑器里
那个js代码是怎么完成实现的?

我在别的网站代友里看到这样的js:,调试了一下不行

 <script type="text/javascript">
                $(document).ready(function () {
            //回复
            $('.js-reply').on('click', function (e) {
                var $nickname = $(this).attr('data-nickname');
                var $parent = $(this).attr('data-parent');
                var $mention = '@' + $nickname + ' ';
                var $form = $('.form');
                var $val = $form.find('textarea').val();
                $form.find('textarea').val($val + $mention).focus();

                if ($parent) {
                    $form.find('#id_parent').val($parent)
                }
                return false
            });
                </script>
             <a class="js-reply" href="#" data-nickname="{{reply.author}}"
                                           data-parent="{{reply.id}}">回复
                                        </a>
                                        

编辑器html代码

<textarea name="body" id="id_body" required rows="10" cols="40" class="textarea">
</textarea> 

怎么样点一下那个 回复 按钮
把 @会员名 放到textarea 里面?

阅读 2.4k
3 个回答
<script type="text/javascript">
    $(function(){
        console.log('111');
        $('.js-reply').on('click', function (e) {
            console.log('222');
            var nickname = $(this).data('nickname');
            var parent = $(this).data('parent');
            var mention = '@' + nickname + ' ';
        
            $('#id_body').val(mention).focus();
        });
    });
</script>

没有用jQuery,反正都出不多,不知道是不是你要的

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>

<body>
    <ul class="comment-list">
        <li>
            <span>userA</span>
            <a href="#">回复</a>
        </li>
        <li>
            <span>userB</span>
            <a href="#">回复</a>
        </li>
        <li>
            <span>userC</span>
            <a href="#">回复</a>
        </li>
    </ul>
    <form action="#" method="post">
        <div class="form-group">
            <textarea id="" cols="60" rows="10"></textarea>
        </div>
        <div class="form-group">
            <input type="submit" name="submit" value="回复">
        </div>
    </form>
    <script>
    window.onload = function() {
        var replayLinks = document.querySelectorAll('.comment-list a');
        var textarea = document.querySelector('form textarea');
        [].forEach.call(replayLinks, function(item, index) {
            item.addEventListener('click', function(e) {
                e.preventDefault();
                textarea.value = '@' + item.previousElementSibling.innerText;
                textarea.focus();
            }, false);
        });
    };
    </script>
</body>

</html>

var $form = $('.form');
你的代码没有问题,在textarea 外面的form上你是不是应该加上一个class 为form呀

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题