是否有事件会告诉我何时文本区域的选择/光标位置发生变化?

问题描述 投票:0回答:1

我正在为要操作的文本区域使用selectionStartselectionEndselectionPosition属性,但是我需要一个事件来告诉我这些值何时更改?

我找到了document selectionchange event,但这不是我想要的。它直接在文档上触发,并在文档中的任何选择更改(太多)时触发。我想要将范围限定在文本区域。

是否存在这样的事件?

如果没有,我将被迫在文本区域上使用文档的selectionchange事件或keyup / mouseup的组合以及一些额外的条件来确保它确实被更改。

javascript dom textarea
1个回答
0
投票

似乎您无法在元素上触发选择更改事件,因此我们需要将其添加到文档中。

选择仅在给定的时间进行一次,因此,侦听并根据需要进行过滤实际上没有问题。请记住,元素上的所有事件无论如何都传播到document,我们只是不听所有。

向演示添加了代码段。

Snippet:

const target = document.querySelector('#content');

document.addEventListener('selectionchange', checkSelection);

function checkSelection(e) {
  if(document.activeElement !== target) {
    return;
  }
  
  console.log(document.getSelection().toString());
}
<textarea id="content">
  How do I check where the cursor is?
</textarea>

<textarea id="notme">
  Not this content please
</textarea>
© www.soinside.com 2019 - 2024. All rights reserved.