2011-12-28 3 views
0

У меня есть вход.Как определить, где курсор находится в строке в элементе формы?

<input name="inputName" id="inputId" value="Hello" /> 

Позволяет делать вид, что курсор после е в привет, вот так:

He|llo 

Как я могу определить положение курсора в этой строке? Смысл, как я могу заставить его сказать, что курсор находится прямо после строки {1} (или перед строкой {2})?

Редактировать: Действительно, моя конечная цель определяет, находится ли курсор в конце строки. Мне не нужно знать, находится ли она посередине. Если он находится в конце строки, я захватываю стрелки и нажимаю на следующий элемент формы. Если это в начале или в середине, то я не перехожу к следующему элементу формы. Прыжки вокруг на стрелочных машинах уже работают, но он скачет независимо от того, где находится курсор в строке.

ответ

1

Вот решение, которое делает то, что вы хотите, без внешних зависимостей: http://jsfiddle.net/imsky/ZH5JL/

Предполагая, что поля #inputId и #secondField:

var field = document.getElementById("inputId"); 

function checkCaret(f) { 
    if (caretPos(f) == field.value.length) { 
     document.getElementById("secondField").focus(); 
    } 
} 

function caretPos(f) { 
    if (f.createTextRange) { 
     var r = document.selection.createRange().duplicate(); 
     r.moveEnd("character", f.value.length); 
     return r.text == "" ? f.value.length : f.value.lastIndexOf(r.text) 
    } else return f.selectionStart; 
} 

field.onkeyup = function() { 
    checkCaret(this) 
}; 
field.onkeydown = function() { 
    checkCaret(this) 
}; 
field.onfocus = function() { 
    checkCaret(this) 
}; 
+1

Я нашел и использовал http://stackoverflow.com/questions/263743/how-to-get-cursor-position-in-textarea, и это сработало как шарм! Спасибо за вашу помощь! – phpmeh

1

Если вы используете jQuery, есть плагин - fieldselection. Он поддерживает начало/конец, выделенный текст и т.д.

+0

Я не используя jquery. – phpmeh

+0

Для этой задачи и для совместимости браузера с jQuery будет лучше. – Bakudan

+0

jQuery - это не вариант, к сожалению. Не является прототипом. – phpmeh