使用JQuery在Textbox中获取光标位置

时间:2015-11-12 06:34:09

标签: javascript jquery textbox

我想使用JQuery在文本框中获取当前光标位置。键入或鼠标按下时,光标位置可能会使用键盘箭头键更改。有没有办法完成这项工作。

var currentCursorPosition = $("#textbox").currentCursorPosition();

2 个答案:

答案 0 :(得分:2)

使用Firefox,Safari(以及其他基于Gecko的浏览器),您可以轻松使用textarea.selectionStart,但对于不起作用的IE,您必须执行以下操作:



function getCaret(el) {
  if (el.selectionStart) {
    return el.selectionStart;
  } else if (document.selection) {
    el.focus();

    var r = document.selection.createRange();
    if (r == null) {
    return 0;
    }

    var re = el.createTextRange(),
    rc = re.duplicate();
    re.moveToBookmark(r.getBookmark());
    rc.setEndPoint('EndToStart', re); 

    return rc.text.length;
  }
  return 0;
}




来源:Caret position in textarea, in characters from the start

答案 1 :(得分:0)

小提琴:This solves my problem.

<textarea id="textarea" style="width:80%;height:100px;"></textarea><br/>
<input type="text" id="indicator" style="width:30px;">

JavaScript的:

var indicator   = document.getElementById("indicator");
var textarea    = document.getElementById("textarea");
setInterval(function() { indicator.value = caret(textarea);}, 100);

function caret(node) {
     if(node.selectionStart) return node.selectionStart;
     else if(!document.selection) return 0;
     //node.focus();
     var c= "\001";
     var sel= document.selection.createRange();
     var txt= sel.text;
     var dul= sel.duplicate();
     var len= 0;
     try{
          dul.moveToElementText(node);
     }
     catch(e){
            return 0;
     }
     sel.text= txt + c;
     len= (dul.text.indexOf(c));
     sel.moveStart('character',-1);
     sel.text= "";
     return len;
}

来源:Source page

相关问题