将光标设置为contenteditable div的结尾

Ros*_*oss 8 javascript jquery html5 contenteditable

我试图将光标设置为next/prev contenteditable标签的末尾,如果当前的标签是空的,但是当我设置焦点时,它会将焦点添加到文本的开头而不是结束尝试几乎所有解决方案都在SO上但似乎没有为我工作.这是我正在尝试的简单代码

HTML代码

<div id = 'main'>
<div id = 'n1' contenteditable=true> Content one</div>
<div id = 'n2' contenteditable=true> Content 2</div>
<div id = 'n3' contenteditable=true> Content 3</div>
<div id = 'n4' contenteditable=true> Content 4</div>
Run Code Online (Sandbox Code Playgroud)

JS代码

$('#main div').keydown(function(){
if(!$(this).text().trim()){
    $(this).prev().focus();
   //setCursorToEnd(this.prev())
    }
});


function setCursorToEnd(ele)
  {
    var range = document.createRange();
    var sel = window.getSelection();
    range.setStart(ele, 1);
    range.collapse(true);
    sel.removeAllRanges();
    sel.addRange(range);
    ele.focus();
  }
Run Code Online (Sandbox Code Playgroud)

her*_*w78 14

你正在使用jQuery并从jQuery获取元素.您必须将其转换为本机DOM元素(通过jQuery-get函数)才能使用"setCurserToEnd"函数:

你的方法调用:

setCursorToEnd(this.prev());
Run Code Online (Sandbox Code Playgroud)

工作方案:

setCursorToEnd($(this).prev().get(0));
Run Code Online (Sandbox Code Playgroud)

看到更新的小提琴:http://jsfiddle.net/dvH5r/4/