在CKEditor中将光标设置在字符串的末尾

时间:2016-05-27 10:29:28

标签: javascript ckeditor

我编写了下面的代码,将第一个字母设置为大写,并在CKEditor中设置数据。第一个字母转换正常,但之后,光标焦点设置在第一个字母之前。如何在角色后面设置光标?

CKEDITOR.on('instanceCreated', function (e) {
    e.editor.on('contentDom', function () {
        e.editor.document.on('keyup', function (event) {
            var data = CKEDITOR.instances.editor1.getData();
            var str = $(data).text();
            var n = str.length;
            if (str != null && n == 1) {
                CKEDITOR.instances['editor1'].setData(titleCase(str))
                function titleCase(string) {
                    return string.charAt(0).toUpperCase() + string.slice(1);
                }
            }
        });
    });
});

enter image description here

1 个答案:

答案 0 :(得分:2)

此代码适合您:

    $(document).ready(function() {

    CKEDITOR.on('instanceReady', function(ev) {

        ev.editor.focus();

        var s = ev.editor.getSelection(); // getting selection
        var selected_ranges = s.getRanges(); // getting ranges
        var node = selected_ranges[0].startContainer; // selecting the starting node
        var parents = node.getParents(true);

        node = parents[parents.length - 2].getFirst();

        while (true) {
            var x = node.getNext();
            if (x == null) {
                break;
            }
            node = x;
        }

        s.selectElement(node);
        selected_ranges = s.getRanges();
        selected_ranges[0].collapse(false);  //  false collapses the range to the end of the selected node, true before the node.
        s.selectRanges(selected_ranges);  // putting the current selection there
    });
 });