在一个特定的地方jquery上设置插入符号

时间:2016-02-18 21:28:35

标签: javascript jquery html

我有一个功能,允许我在textarea中设置一个插入符号。

这里是

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();
    }
}

我想要做的是,一旦页面加载,我想在焦点()之后将插入符号设置在特定位置

$("#sometextarea").focus();
setCaretPosition(document.getElementById('sometextarea'),last_update_caret);

然而它不起作用,我尝试了很多不同的方法,比如blur()而不是focus()然后尝试将它设置在某个位置(由于某些原因,它在5-6次尝试之后工作但是那样不希望因为我希望它在页面自动加载时这样做。)

我希望它向下滚动,如果文字很长!

Example

答案

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();
  }
}

1 个答案:

答案 0 :(得分:0)

我认为这对我有用,只要我了解其预期目的。我所做的只是添加文档的速记,以确保在尝试函数之前已经加载了所有内容:

$(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();
    }
}
  });