EXTJS 5:获取文本字段或查找字段中的当前光标位置

时间:2016-12-14 11:15:46

标签: javascript dom extjs cursor

我需要找到光标的当前位置,以便将其存储在变量中。我已经看了几个SO答案,没有一个成功。

到目前为止我所拥有的:

function getCaretPos(id) {
    var el = Ext.getCmp(id);
       var rng, ii=-1;
    var currSelection = window.getSelection();
    if(currSelection){
        currSelection.modify("character", el.value.length);
       // get the current position
       // ii = currentPosition
    }
    return ii;
};

例如:我有一个显示数据的文本字段。

MYWORD

当我将光标放在Y和W之间时,它应该返回2.我已经看到了旧版本IE的一些示例,但似乎没有一个在Chrome中适用于我。

有谁知道如何做到这一点?

2 个答案:

答案 0 :(得分:0)

var textarea=document.getElementById('textarea');

textarea.onclick=function(){
  setTimeout(function(){
   console.log(textarea.selectionStart);
  },1);
}
<input id="textarea" type="text" value="MYWORD">

答案 1 :(得分:0)

我在文本字段的旧版本的extjs(2+)中尝试过此代码,它适用于我(仅在IE上测试)

关于从DOM中捕获位置。

var position = item.el.dom.selectionStart;

在您的示例中,它将是:

    function getCaretPos(id) {
        var element = Ext.getCmp(id);
        var currSelection = element.el.dom.selectionStart;
    }

如果您想更改位置,只需将de selectionEnd值设置为您想要的位置。

element.el.dom.selectionEnd = position;