我需要找到光标的当前位置,以便将其存储在变量中。我已经看了几个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中适用于我。
有谁知道如何做到这一点?
答案 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;