2016-12-14 3 views
0

Мне нужно найти текущую позицию курсора, чтобы я мог сохранить его в переменной. Я просмотрел несколько ответов SO, и ни один из них не был успешным.EXTJS 5: Получить текущую позицию курсора в текстовом поле или в поисковом поле

То, что я до сих пор:

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

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

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

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

Если вы хотите, чтобы изменить положение, нужно просто установить де selectionEnd значение позиции, которую вы хотите.

element.el.dom.selectionEnd = position; 
Смежные вопросы