使用 SCEditor 将光标设置到文本末尾

Setting the cursor to the end of the text using SCEditor

我正在尝试插入引号,然后将光标移动到编辑器的末尾。目前,我插入引号,光标在引号内结束,所以如果你开始输入,用户会添加到引号中,这不是我想要发生的事情

我已经尝试查看他们的 documentation 来弄清楚如何做到这一点,但我不认为我引用理解它

这是我当前的代码:

    $(document.body).on('click', '.action.quote', function() {

        var $target = $($(this).data('target'));
        var editor = $('#reply-body').sceditor('instance');
        var bodyText = $target.html();

        editor.insert('[quote=author]' + bodyText + '[/quote]');
        editor.focus();

        smoothScroll('#new-comment');
    });

有什么快速的方法吗?我是 SCEditor 的新手,所以这对我来说都是新的

目前没有一种简单的方法可以将光标放在插入的内容之后,尽管可能应该有。我会创建一个问题来添加一个。

现在您需要使用范围 API 手动移动光标。这样的事情应该有效:

$(document.body).on('click', '.action.quote', function() {
    var $target = $($(this).data('target'));
    var editor = $('#reply-body').sceditor('instance');
    var bodyText = 'Dummy text for example';

    editor.insert('[quote=author]' + bodyText + '[/quote]');
    editor.focus();

    var rangeHelper = editor.getRangeHelper();
    var range = rangeHelper.cloneSelected();

    // Handle DOM ranges, if you casre about IE < 9
    // you'll need to handle TextRanges too
    if ('selectNodeContents' in range) {
        var bodyChildren = editor.getBody()[0].children;

        // Select the last child of the body
        range.selectNodeContents(bodyChildren[bodyChildren.length - 1]);

        // Move cursor to after it
        range.collapse(false);
        rangeHelper.selectRange(range);
    }

    smoothScroll('#new-comment');
});

实例:https://jsfiddle.net/3z8cg8z1/