javascript - 你如何获得文本区域中的光标位置?

标签 javascript jquery html input textarea

我有一个文本区域,我想知道我的光标是在文本区域的最后一行还是文本区域的第一行,使用 JavaScript。

我想到了抓取第一个换行符和最后一个换行符的位置,然后抓取光标的位置。

var firstNewline = $('#myTextarea').val().indexOf('\n');
var lastNewline = $('#myTextarea').val().lastIndexOf('\n');

var cursorPosition = ?????;

if (cursorPosition < firstNewline)
    // I am on first line.
else if (cursorPosition > lastNewline)
    // I am on last line.
  • 是否可以在文本区域内抓取光标位置?
  • 对于确定我是在文本区域的第一行还是最后一行,您有更好的建议吗?

除非 JavaScript 如此简单或更简单,否则首选 jQuery 解决方案。

最佳答案

如果没有选择,您可以使用属性 .selectionStart.selectionEnd(没有选择它们是相等的)。

var cursorPosition = $('#myTextarea').prop("selectionStart");

请注意,旧版浏览器不支持此功能,尤其是 IE8-。在那里,您将不得不处理文本范围,但这完全令人沮丧。

不过,我相信某处有一个专门用于获取和设置输入元素中的选择/光标位置的库。我不记得它的名字了,但是关于这个主题的文章似乎有几十篇。

关于javascript - 你如何获得文本区域中的光标位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7745867/

相关文章:

javascript - 使用 innerHTML 重新加载页面的中心 Pane

javascript - 按钮值未显示 -javascript

javascript - 如何正确使用客户端和服务器端的 javascript 文件 - Node.js

php - 当用户提交表单时,如何提交到 iframe 并在主页上显示结果?

javascript - 使用 DateTimePicker 插件的 JQuery 不起作用

javascript - 选择一个复选框并禁用其他复选框

jquery - 如何根据悬停的元素动态更改 JQuery 可排序助手?

javascript - 是否可以从内部更改 iframe 的宽度/高度

javascript - 循环元素javascript

javascript - 缩放时,div 在某些情况下不会放置滚动条