Summernote - 在焦点上,将光标插入编辑器的末尾

时间:2016-02-02 18:10:35

标签: javascript cursor-position summernote

当Summernote文本编辑器初始化时 SqlCommand cmd = new SqlCommand("Select SUM(abcd) from rstuv", connection); object result = cmd.ExecuteScalar(); decimal sum1 = result == null ? 0 : Convert.ToDecimal(result); 属性设置为focus,编辑器获得焦点但将光标放在编辑器的开头。

我的偏好是将光标放在用户最初点击的位置。至少我只需要将光标放在编辑器的末尾。

Summernote API似乎没有直接支持这一点,我尝试了各种 hacky looking 解决方案;如清空文本区域,创建编辑器,然后插入HTML节点。光标仍然在行的开头。

忘了包括我的小提琴:http://jsfiddle.net/madChemist/gvy3po4L/1/

1 个答案:

答案 0 :(得分:5)

以下是我修改为我工作的解决方案:

        $.fn.extend({
            placeCursorAtEnd: function() {
                // Places the cursor at the end of a contenteditable container (should also work for textarea / input)
                if (this.length === 0) {
                    throw new Error("Cannot manipulate an element if there is no element!");
                }
                var el = this[0];
                var range = document.createRange();
                var sel = window.getSelection();
                var childLength = el.childNodes.length;
                if (childLength > 0) {
                    var lastNode = el.childNodes[childLength - 1];
                    var lastNodeChildren = lastNode.childNodes.length;
                    range.setStart(lastNode, lastNodeChildren);
                    range.collapse(true);
                    sel.removeAllRanges();
                    sel.addRange(range);
                }
                return this;
            }
        });

最初来自这篇文章:https://stackoverflow.com/a/6249440/2921200然后我修改为使用jQuery&特别针对Summernote。