【问题标题】:How to focus end of the text in <code> tag in HTML using Javascript?如何使用 Javascript 在 HTML 中的 <code> 标记中聚焦文本的结尾?
【发布时间】:2019-07-08 11:54:39
【问题描述】:

我正在尝试通过 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>

如何在代码标签内使用光标位置?

【问题讨论】:

    标签: javascript jquery html focus cursor-position


    【解决方案1】:

    您可以使用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>

    【讨论】:

    • 这段代码发送光标结束,但是如果我们想保持当前位置索引,而不是结束呢?
    • 您可以在焦点消失时将位置保存在变量或元素属性中,并在焦点回来时检索它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-16
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 2021-06-23
    • 1970-01-01
    • 2011-08-24
    相关资源
    最近更新 更多