更新输入值时如何保持光标位置

时间:2015-11-30 21:36:18

标签: javascript innerhtml

我正在使用“添加评论框”,其中包含一些功能,例如将void* consumer(void* param) { while(true) { sem_wait(&full); sem_wait(&mutex); if( buffer.size() < 3 ) { // cancel an attempt to take an item from a buffer sem_post(&full); } else { consume_item(); sem_post(&empty); } sem_post(&mutex); } } 更改为带有粗体样式的文字,依此类推。问题是当javascript中的str.replace操作完成时,写入区域中的光标会回到起始位置。

[b]text[/b]

2 个答案:

答案 0 :(得分:0)

您是否尝试过将重点放在元素上?通常,浏览器(IE除外)将光标重新置于焦点后将其置于原始位置。因为您使用的是jquery:

$("#yourID").focus()

答案 1 :(得分:0)

我认为你应该使用lexter / parser来将bbcode转换为HTML(除非原因是你想通过这样做来学习)。

Here's one that might work for you。它支持默认的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>