javascript - 每当按下光标或箭头键时,如何获取当前光标位置(在文本区域中)?
问题描述
我试图在单击鼠标重新定位后立即获取文本光标的位置。问题是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>
推荐阅读
- java - 我的 lastLocation 在一些设备上显示为 null 并使我的应用程序崩溃
- delphi - 在安装 Rio 之前删除以前的版本(东京)?
- vim - 在 vim 中将自动完成匹配显示为预览文本
- scala - 字符串为空时如何将字符串转换为int-0
- angular - 使用 Angular 的 HttpClient 发出返回 PDF 的 POST 请求
- php - Android 从 php 读取 JsonObject 作为字符串
- python - cifar10 随机化训练和测试集
- image-processing - 旋转使用双线性插值反向映射计算?
- java - 延迟加载在spring数据jpa一对多双向映射中不起作用
- react-native - React Native 2 Text 元素显示一行偏移而不是同一行