你如何获得textarea中的光标位置?
我有一个textarea,我想知道如果我在textarea的最后一行或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.
jQuery解决方案首选,除非JavaScript是简单或更简单。
任何帮助深表感谢。
如果没有选择,你可以使用属性.selectionStart
或.selectionEnd
(没有选择他们是平等的)。
var cursorPosition = $('#myTextarea').prop("selectionStart");
请注意,这在旧版浏览器中不受支持,最值得注意的是IE8-。 在那里你必须使用文本范围,但这是一个完全的沮丧。
尽管如此,我相信在某个地方有一个图书馆可以在输入元素中获取和设置选择/光标位置。 我不记得它的名字,但似乎有几十篇关于这个主题的文章。
我已经做了相当多的工作,并在Stack Overflow上多次发布了一个用于在textareas中获取插入/选择位置的函数。 与其他几乎所有其他代码不同,它可以在IE <9中使用换行符正常工作。
以下是一些具有背景的示例问题:
是否有Internet Explorer批准的selectionStart和selectionEnd替代品?
这里是我写的一个jQuery插件的链接,包括这个函数和其他与选择相关的textarea函数:
https://github.com/timdown/rangyinputs
这是我在标准库中的一个跨浏览器功能:
function getCursorPos(input) {
if ("selectionStart" in input && document.activeElement == input) {
return {
start: input.selectionStart,
end: input.selectionEnd
};
}
else if (input.createTextRange) {
var sel = document.selection.createRange();
if (sel.parentElement() === input) {
var rng = input.createTextRange();
rng.moveToBookmark(sel.getBookmark());
for (var len = 0;
rng.compareEndPoints("EndToStart", rng) > 0;
rng.moveEnd("character", -1)) {
len++;
}
rng.setEndPoint("StartToStart", input.createTextRange());
for (var pos = { start: 0, end: len };
rng.compareEndPoints("EndToStart", rng) > 0;
rng.moveEnd("character", -1)) {
pos.start++;
pos.end++;
}
return pos;
}
}
return -1;
}
像这样在你的代码中使用它:
var cursorPosition = getCursorPos($('#myTextarea')[0])
这是它的补充功能:
function setCursorPos(input, start, end) {
if (arguments.length < 3) end = start;
if ("selectionStart" in input) {
setTimeout(function() {
input.selectionStart = start;
input.selectionEnd = end;
}, 1);
}
else if (input.createTextRange) {
var rng = input.createTextRange();
rng.moveStart("character", start);
rng.collapse();
rng.moveEnd("character", end - start);
rng.select();
}
}
http://jsfiddle.net/gilly3/6SUN8/
链接地址: http://www.djcxy.com/p/65465.html上一篇: How do you get the cursor position in a textarea?
下一篇: Get Mouse Position