我有一个函数可以让我在文本区域内设置插入符。
在这里
function setCaretPosition(ctrl, pos) {
if(ctrl.setSelectionRange)
{
ctrl.focus();
ctrl.setSelectionRange(pos,pos);
}
else if (ctrl.createTextRange) {
var range = ctrl.createTextRange();
range.collapse(true);
range.moveEnd('character', pos);
range.moveStart('character', pos);
range.select();
}
}
我想做的是在页面加载后立即将插入符设置在特定位置 after focus() ,就像这样。
$("#sometextarea").focus();
setCaretPosition(document.getElementById('sometextarea'),last_update_caret);
但是它不起作用,我尝试了很多不同的方法,例如 blur() 而不是 focus() 然后尝试将它设置在某个位置(出于某种原因它在 5-6 次尝试后起作用,但就是这样不需要,因为我希望它在页面自动加载时执行此操作)。
如果文本很长,我也希望它向下滚动!
回答
var caret = 88;
$(function() {
setCaretPosition(document.getElementById('sometextarea'), caret);
$textarea = $("#sometextarea");
var cursorPosition = $textarea.prop("selectionStart");
$textarea.scrollTop(cursorPosition);
});
function setCaretPosition(ctrl, pos) {
if (ctrl.setSelectionRange) {
ctrl.focus();
ctrl.setSelectionRange(pos, pos);
} else if (ctrl.createTextRange) {
var range = ctrl.createTextRange();
range.collapse(true);
range.moveEnd('character', pos);
range.moveStart('character', pos);
range.select();
}
}
最佳答案
只要我了解预期目的,我认为这对我有用。我所做的只是添加 document ready 的简写,以确保在尝试该功能之前已加载所有内容:
$(function(){
var last_update_caret = 3;
$("#sometextarea").focus();
setCaretPosition(document.getElementById('sometextarea'),last_update_caret)
;
function setCaretPosition(ctrl, pos) {
if(ctrl.setSelectionRange)
{
ctrl.focus();
ctrl.setSelectionRange(pos,pos);
}
else if (ctrl.createTextRange) {
var range = ctrl.createTextRange();
range.collapse(true);
range.moveEnd('character', pos);
range.moveStart('character', pos);
range.select();
}
}
});
关于javascript - 在特定位置设置插入符号 jquery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35492769/