将插入符号移动到焦点上文本区域的末尾
move caret to end of textarea on focus
我认为这将是一件非常简单的事情,但我无法让它工作。我正在使用以下代码,但没有成功。我知道这在即我正在使用铬中不起作用。这是一个JS小提琴来演示。谢谢
$('#ta').focus(function(){
this.selectionStart = this.value.length;
});
这是一个跨浏览器和jQuery兼容的解决方案(它支持给定选择器中的多个元素)。
在Chrome 40x,IE 11和FireFox 34x中进行测试
$("textarea").focus(function () {
for (var i = 0; i < $(this).length; i++) {
var el = $(this)[i]
window.setTimeout(function () {
if (el !== null) {
if (el.createTextRange) {
var range = el.createTextRange();
range.move('character', el.value.length);
range.select();
}
else {
if (el.selectionStart || el.selectionStart === 0) {
el.focus();
el.setSelectionRange(el.value.length, el.value.length);
}
else {
el.focus();
}
}
}
}, 1)
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<textarea id="ta">focus on me</textarea><br />
<textarea id="ta2">focus on me</textarea>
如果您想了解如何修复原始解决方案以使其正常工作,这是您必须做的:
$('#ta').focus(function (e) {
var element = this;
setTimeout(function () {
element.selectionStart = element.value.length;
}, 1);
});
必须在非常短的延迟后设置位置(在我的情况下,1 毫秒就足够了),因为似乎光标位置设置为您在焦点功能完成后单击的位置,因此您将光标设置为输入的末尾,但发生这种情况后,它会立即放置在用户单击的位置
小提琴:http://jsfiddle.net/zb5uoL3t/
一个快速的
$('#ta').focus(function(){
moveCursorToEnd(document.getElementById('ta'));
});
function moveCursorToEnd(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();
}
}
http://jsfiddle.net/9xaxz53x/1/
相关文章:
- onkeyup无法动态创建多个文本区域
- 具有所有样式的文本正在复制到可编辑文本区域
- 在文本区域POST后解码JSON
- HTML文本区域文本到XML
- 阻止在文本区域/文本框中输入数字
- 使用 javascript 单击图片后更改<文本区域>文本
- 使用 javascript 检测文本区域/文本输入中的 HTML 标记,但它应该支持常见的>和<
- 在按 Tab 键时选择文本区域文本
- 切换文本区域文本,但保留对文本的更改
- 清除文本区域/文本框内容的按钮
- 加载页面时,聚焦并全选文本区域文本
- 如何使可编辑文本区域文本不可选择
- 我的文本区域文本是't用javascript将我想要的样式设置为CSS
- 使用jQuery将文本区域文本安全地存储在隐藏字段中,然后稍后在PHP中使用该文本
- 删除文本区域文本提交在新的选项卡
- 如何在添加新文本时保持文本区域文本静态
- 使用 jQuery 将文本区域文本设置为格式正确的 HTML 代码
- 为什么文本添加到区域文本是通过页面刷新,而不是直接刷新
- 使用 jquery 修改文本区域文本
- 如何使用Javascript在文本区域(文本框)中单击(光标闪烁)而不使用鼠标单击