如何在光标或方向键被按下时获得当前光标的位置(在一个文本区域内)?

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

我想得到文本光标在点击后的位置。下来 鼠标来重新定位。问题是 selectionStartselectionEnd 不返回光标的最新位置,因为 "新 "的位置在点击之前不会被存储。释放. 这段代码显示了当你试图用鼠标重新定位小圆点时出现的问题。

这很奇怪,因为从技术上讲,我可以在 "新 "的位置上键入,只要鼠标被点击下来,但是 selectionStart 仍然返回旧的位置。如果光标的位置可以清楚地改变,而无需释放点击,那么如何进入新的位置,而无需等待。mouseup?

(这似乎也是跟踪光标位置后按键的一个问题)

const input = document.getElementById('myInput');
input.addEventListener('mousedown', showposition); // click

function showposition() {
  document.getElementById("output").innerHTML += " " + input.selectionStart;
}
<input id="myInput">
<p id="output"></p>
javascript html jquery selection caret
1个回答
1
投票

使用 click 事件,而不是 mousedown 事件。这是因为,当mousedown事件被触发时,会有 selectionStart 不会被更新,这就是为什么你一直得到以前的值。

另一方面,点击事件是一个组合,包括 mouseup + mousedown 事件,捕捉一次完整的鼠标点击并返回预期的光标位置值。

const input = document.getElementById('myInput');
input.addEventListener('click', showposition); // click

function showposition(event) {
  document.getElementById("output").innerHTML += " " + event.target.selectionStart;
}
<input id="myInput">
<p id="output"></p>
© www.soinside.com 2019 - 2024. All rights reserved.