我试图通过将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标记版本不被计为字符串长度的一部分。有什么方法可以解决这个问题吗?