javascript - 在内容可编辑的末尾设置光标

标签 javascript contenteditable rangy

我有一个简单的可编辑内容,其中包含带有标签的文本......当插入标签时,单词被替换为其中的跨度......

<div contenteditable=true>
      text text text <span class="tag">tag</span> 
</div>

这是结果(当用户按下空格时,标签被替换为包含标签文本的跨度;这发生在 keyup 上)

然后我需要将光标放在可编辑内容的末尾(跨度之外),以便让用户继续输入......

我已经能够在最后移动光标,但只能在跨度内......

我用范围广的。

最佳答案

这可能有效

function moveCursorAtTheEnd(){
    var selection=document.getSelection();
    var range=document.createRange();
    var contenteditable=document.querySelector('div[contenteditable="true"]');

    if(contenteditable.lastChild.nodeType==3){
      range.setStart(contenteditable.lastChild,contenteditable.lastChild.length);
    }else{
      range.setStart(contenteditable,contenteditable.childNodes.length);
    }
    selection.removeAllRanges();
    selection.addRange(range);

  }

关于javascript - 在内容可编辑的末尾设置光标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36284973/

相关文章:

java - 使用 Hibernate 将值设置为大写

javascript - 停止单击取消选择的文本

html - Contenteditable 不适用于 Opera 中的表格

javascript - 无法使用 Rangy 库取消突出显示 2 个不同段落中的选择

node.js - 错误: Error in Rangy WrappedRange module: createRange(): Parameter must be a Window object or DOM node

javascript - div 中的最后一个 span 改变了它的宽度

javascript - WordPress 模板页面中的 jQuery

javascript - Uncaught ReferenceError : function is not defined

JavaScript 性能 : `if (a in b) {b[a]()}` vs `a in b && b[a]();` vs object traversing

javascript - 无法获取 document.execCommand ('undo' ) 在浏览器中以相同的方式工作