【发布时间】:2012-02-14 06:22:54
【问题描述】:
我在另一个问题上发现了这个:
setCaretToPos = function(input, selectionStart, selectionEnd){
if(input.setSelectionRange){
input.focus();
input.setSelectionRange(selectionStart, selectionEnd);
}else if(input.createTextRange){
var range = input.createTextRange();
range.collapse(true);
range.moveEnd('character', selectionEnd);
range.moveStart('character', selectionStart);
range.select();
}
};
setCaretToPos(8, 12);
它应该从第 8 个字符和第 12 个字符之间的文本区域中选择文本。
它适用于 Firefox 和 Chrome,但在 Opera 中我得到了错误的选择。偏移量将两个字符移到后面
这有什么问题?
似乎它与换行符有关:
\n 因为如果文本不包含换行符,则选择是正确的。
【问题讨论】:
-
我看到的方式是您缺少函数的输入参数。它在参数列表中,但您没有将其传递给您的函数。检查一下:jsfiddle.net/7Tsx6 并尝试删除 document.getElementById 部分并尝试两种情况。
-
不,这只是我的问题中的一个错误,忘记添加输入参数。当文本区域有新行时出现问题
-
根据上面的评论,你传递的是 jQuery 对象还是实际元素?
标签: javascript jquery html textarea opera