键入时将HTML格式应用于contenteditable div

时间:2017-10-08 10:25:49

标签: jquery dom contenteditable caret

我试图通过将HTML格式应用于文本的某些部分来动态更新用户输入到可信任div中的文本。使用jQuery和jQuery插入符插件(https://github.com/accursoft/caret)这是我到目前为止所拥有的:

   $("#edit").on("input",function(e){
      var text=$(this).text();
      var pos = $("#edit").caret();
      var replacement=text.replace(/([0-9]+)/g,'<span class="highlight">$1</span>');
      $("#edit").html(replacement);
      $("#edit").caret(pos); 
    });

我希望用户能够在动态应用HTML格式的同时继续输入,因此需要操纵插入符的位置。在不操纵插入符号的位置的情况下,每次更新文本时都会返回文本的开头。

在未应用HTML格式时,保存插入符号在输入上的位置,然后在更新文本内容后将插入符号设置为该位置,但是一旦应用格式化,就会报告以下错误:

  

未捕获的DOMException:无法执行&#39; collapse&#39;选择&#39;:   偏移量8大于节点的长度

似乎由于某种原因,文本的HTML标记版本不被计为字符串长度的一部分。有什么方法可以解决这个问题吗?

0 个答案:

没有答案