javascript - 如何使用 Javascript 将 HTML 中的 <code> 标记中的文本末尾置于焦点?

标签 javascript jquery html focus cursor-position

我正在尝试通过 onkeypress 事件重新格式化 HTML 代码标记内的某些文本。但文本更改后,光标移至开始位置。我必须保持光标的当前位置。

为了防止这个问题,我发现了这个;

this.selectionStart = this.selectionEnd = this.value.length;

来自: Use JavaScript to place cursor at end of text in text input element

但我明白了,它仅适用于输入元素:(

<code contenteditable="true" id="editor"  onkeypress="CreateStyle()">
  select * <span style="color:blue">from</span> SomeTable</code>

如何在代码标签内调整光标位置?

最佳答案

您可以使用RangeSelection设置选择

const codeNode = document.getElementById('editor');
const range = document.createRange();
const selection = window.getSelection();

range.setStartAfter(codeNode.lastChild);
range.setEndAfter(codeNode.lastChild);

selection.removeAllRanges();
selection.addRange(range);
<code contenteditable="true" id="editor"  onkeypress="CreateStyle()">
  select * <span style="color:blue">from</span> SomeTable</code>

关于javascript - 如何使用 Javascript 将 HTML 中的 <code> 标记中的文本末尾置于焦点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56934379/

相关文章:

html - 在由文本和图像组成的 html 标签中隐藏文本

javascript - Jquery 移动事件页面

javascript - 对 javascript 数组进行排序,使空白值始终位于底部

javascript - jquery 替换方括号

jquery - 使用 jquery 将一行添加到在变量中构建的表中

javascript - 在 iframe 中禁用脚本执行

javascript - 使用innerHTML通过JavaScript获取图像尺寸

javascript - 与使用 getBoundingClientRect 之前放置的位置相比,元素的位置不会保持不变

javascript - 使用 $.ajax POST 将查询字符串参数传递给 WebService

javascript - ajax成功后重试没有.done