当前位置: 首页 > 面试题库 >

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

翟柏
2023-03-14
问题内容

我有一个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解决方案。


问题答案:

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

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

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

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



 类似资料:
  • 问题内容: 如何使用jQuery在文本字段中设置光标位置?我有一个带有内容的文本字段,我希望用户将光标放在该字段上时将光标定位在某个偏移处。该代码应该看起来像这样: 该setCursorPosition函数的实现是什么样的?如果您的文本字段的内容为abcdefg,则此调用将导致光标的定位如下:abcd | efg。 Java具有类似的功能setCaretPosition。javascript是否存

  • 我想创建一个简单的函数,将文本添加到用户光标位置的文本区域中。它需要是一个干净的函数。只是基本的。剩下的我都知道了。

  • 问题内容: 我想计算一个文本区域中的行数,例如: 应该最多计数4行。基本上按一次Enter键即可将您转到下一行 以下代码无法正常工作: 无论有多少行,它始终为“ 1”。 问题答案: 我已经将line和lineCount方法实现为String原型: 显然,在IE9中split方法不会在字符串的末尾(或textarea的innerText属性)计算回车符和/或换行符,但在Chrome 22中会对其进行

  • 问题内容: 我正在尝试制作自己的 WYSIWYG 编辑器。有什么办法,如何获取用户在textarea中选择的文本? 例如,如果用户选择了某个单词然后单击按钮,那么我如何找出选择了哪个文本? 我正在使用 jQuery 。 问题答案: 尝试使用jquery-fieldselection插件。 您可以从这里下载。也有一个例子。

  • 问题内容: 我有contentEditable元素(可以是p,div,…),我想在其中获得插入符号(光标)的位置。我通常可以通过以下代码来实现: 当元素仅包含文本时,这可以很好地工作。但是,当元素包含某些HTML格式时,返回的位置将相对于所包含HTML元素内的插入符号位置。 假设contentEditable元素的内容是这样的: 如果插入符在inside内,假设在C和D之间,则上面代码返回的位置是