使用SCEditor

时间:2017-04-20 10:22:36

标签: javascript jquery 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很陌生,所以对我来说都是新手

1 个答案:

答案 0 :(得分:2)

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

现在您需要使用范围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/