TextArea选择更改?

时间:2017-10-09 16:58:49

标签: javascript html events textarea selection

对于HTML TextArea元素,如何对其中编辑的文本的所有选择更改进行回调?

(我目前正在使用组合键盘,按键和鼠标移动(用于拖动选择端点)的黑客攻击,可能还会添加更多内容,但这并不是很优雅。)

无法在HTML文档或SO上找到它。

编辑:通过所有选择更改'我的意思是包括在使用鼠标选择期间的连续变化,并且我还希望在选择崩溃时以及只有移动的插入符号时选择回调(选择是零长度,但是更改)。我认为除了通过组合许多事件来实现这一点之外别无他法。甚至使用间隔回调并简单比较,但也不是很好。

2 个答案:

答案 0 :(得分:2)

您想要的是selectionchangewindow上可用的全局document事件。阅读here

为您的文本区域添加唯一的ID:

<textarea id="unique-id"></textarea>

将事件侦听器添加到文档中:

function handleSelection() {
  const activeElement = document.activeElement

  // make sure this is your textarea
  if (activeElement && activeElement.id === 'unique-id') {
    const range = {
      start: activeElement.selectionStart,
      end: activeElement.selectionEnd
    }
    // do something with your range
  }
}

document.addEventListener('selectionchange', handleSelection)

这将运行handleSelection函数中的任何代码。

答案 1 :(得分:0)

您可以使用onselect事件

object.addEventListener("select", myScript);

https://www.w3schools.com/jsref/event_onselect.asp