我想得到文本光标在点击后的位置。下来 鼠标来重新定位。问题是 selectionStart
和 selectionEnd
不返回光标的最新位置,因为 "新 "的位置在点击之前不会被存储。释放. 这段代码显示了当你试图用鼠标重新定位小圆点时出现的问题。
这很奇怪,因为从技术上讲,我可以在 "新 "的位置上键入,只要鼠标被点击下来,但是 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>
使用 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>