Javascript 更新输入值时如何保持光标位置
我正在开发“添加评论框”,其中包含一些功能,如将Javascript 更新输入值时如何保持光标位置,javascript,innerhtml,Javascript,Innerhtml,我正在开发“添加评论框”,其中包含一些功能,如将[b]text[/b]更改为粗体文本等等。问题是当javascript中的str.replace操作完成时,位于写入区域的光标返回到起始位置 $('#comment').keyup(function () { var str = document.getElementById("comment").innerHTML; if (str.indexOf('[b]') >= 0 && str.indexOf('[/
[b]text[/b]
更改为粗体文本等等。问题是当javascript中的str.replace操作完成时,位于写入区域的光标返回到起始位置
$('#comment').keyup(function () {
var str = document.getElementById("comment").innerHTML;
if (str.indexOf('[b]') >= 0 && str.indexOf('[/b]') >= 0) {
var start_pos = str.indexOf('[b]') + 3;
var end_pos = str.indexOf('[/b]', start_pos);
var text_to_get = str.substring(start_pos, end_pos)
res = str.replace("[b]" + text_to_get + "[/b]", "<b>" + text_to_get + "</b>");
document.getElementById("comment").innerHTML = res;
}
});
$('#comment').keyup(函数(){
var str=document.getElementById(“comment”).innerHTML;
如果(str.indexOf('[b]')>=0&&str.indexOf('[/b]')>=0){
var start_pos=str.indexOf('[b]')+3;
var end_pos=str.indexOf(“[/b]”,start_pos);
var text_to_get=str.substring(开始位置,结束位置)
res=str.replace(“[b]”+text_to_get+“[/b]”,“+text_to_get+”);
document.getElementById(“comment”).innerHTML=res;
}
});
您是否尝试将焦点放回元素上?通常,浏览器(IE除外)会在光标重新聚焦后将光标放回其原始位置。因为您使用的是jquery:
$(“#yourID”).focus()
我认为您应该使用lexter/解析器来将bbcode转换为HTML(除非原因是您想边做边学)
。它支持默认的bbcode块,并使您可以定义自己的块
<head>
<!-- Optional styling for .xbbcode-* classes -->
<link rel="stylesheet" type="text/css" href="xbbcode.css">
</head>
<body>
<script src="xbbcode.js"></script>
<script>
var text = document.getElementById("comment").innerHTML;
var result = XBBCODE.process({
text: text,
removeMisalignedTags: false,
addInLineBreaks: false
});
console.error("Errors", result.error);
console.dir(result.errorQueue);
console.log(result.html); //=> <span class="xbbcode-b">Hello world</span>
</script>
</body>
var text=document.getElementById(“comment”).innerHTML;
var result=XBBCODE.process({
文本:文本,
移除未对齐的标记:false,
addInLineBreaks:错误
});
控制台错误(“错误”,结果错误);
console.dir(result.errorQueue);
console.log(result.html);//=>你好,世界
这不是关于str.replace
的问题,但是innerHTML
的行为有帮助吗?可能重复