使用 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');
});
我正在尝试插入引号,然后将光标移动到编辑器的末尾。目前,我插入引号,光标在引号内结束,所以如果你开始输入,用户会添加到引号中,这不是我想要发生的事情
我已经尝试查看他们的 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');
});