【发布时间】:2015-04-25 00:17:36
【问题描述】:
我在 HTML 中有这个内容可编辑的 div
<div contenteditable="true" id="TextOnlyPage"></div>
这是我的 jquery 代码
var rxp = new RegExp("(([0-9]+\.?[0-9]+)|([0-9]+))", "gm");
$('#TextOnlyPage').keyup(function(e){
if(e.keyCode == 13){
e.preventDefault();
$('#TextOnlyPage').children().each(function() {
if ( $(this).is("div") ) {
$(this).contents().unwrap();
}});
$('#TextOnlyPage').append("<br/>");
}
$('#TextOnlyPage').children().contents().unwrap();
var $this = $(this);
var content = $this.html();
$this.html(content.replace(rxp, "<span class='highlight'>$1</span>"));});
问题是插入符号的位置,因为当它在 string.replace 方法中围绕数字应用跨度标签时,光标会转到可编辑内容 div 的开头。当我按下回车键时,它也不能进入下一行。
我知道我可以通过 range 和 selection 对象处理它,但找不到有用的资源来了解这些对象的工作原理。
请为我提供此问题的解决方案,如果使用 angularjs 解决方案会更好,或者为我提供一个资源,我可以通过工作示例了解范围和选择对象。
【问题讨论】:
-
我假设您的意思是大于 [
>] 和小于 [<] 的字符,因为在这篇文章的任何地方都没有插入符号 [^]? -
@ethorn10 插入点位置,OP指的是插入点在文本框中的位置。
-
@ethorn10 对不起,我没有得到你..!
标签: javascript jquery angularjs caret