作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个文本区域,当我单击它时,我想将插入符号移动到最后一个字符,因此Something[caret]
function moveCaret(){
// Move caret to the last character
}
<textarea onclick="moveCaret();">
Something
</textarea>
据我所知,这对于 TextRange 对象来说是可能的,但我真的不知道如何使用它
编辑:我希望只看到纯 JavaScript 解决方案,所以不要使用库。
最佳答案
以下函数适用于所有主要浏览器,适用于文本区域和文本输入:
function moveCaretToEnd(el) {
if (typeof el.selectionStart == "number") {
el.selectionStart = el.selectionEnd = el.value.length;
} else if (typeof el.createTextRange != "undefined") {
el.focus();
var range = el.createTextRange();
range.collapse(false);
range.select();
}
}
但是,每当用户单击文本区域时,您确实不应该执行此操作,因为用户将无法使用鼠标移动插入符号。相反,当文本区域获得焦点时执行此操作。 Chrome 中也存在一个问题,可以通过以下方式解决:
完整示例:http://www.jsfiddle.net/ghAB9/3/
HTML:
<textarea id="test">Something</textarea>
脚本:
var textarea = document.getElementById("test");
textarea.onfocus = function() {
moveCaretToEnd(textarea);
// Work around Chrome's little problem
window.setTimeout(function() {
moveCaretToEnd(textarea);
}, 1);
};
关于Javascript:将插入符移动到最后一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4715762/
我是一名优秀的程序员,十分优秀!