一尘不染

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

javascript

我有一个textarea,我想知道我是用JavaScript还是光标在textarea的最后一行还是textarea的第一行。

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

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解决方案。


阅读 340

收藏
2020-05-01

共1个答案

一尘不染

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

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

请注意,较旧的浏览器(尤其是IE8-)不支持此功能。在那里,您必须使用文本范围,但这是一个完全的挫败感。

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

2020-05-01