Рабочий крособраузерный код для получения/установки позиции курсора в input и textarea. Код работает в браузерах IE 6, 7, 8, >=9, Firefox, Chrome, Safari and Opera.
/**
* Cross browser Javascript code to get/set caret position in textarea/input
* ctrl - is the object
*/
var caretPosition = {
get : function (ctrl) {
// IE < 9 Support
if (document.selection) {
ctrl.focus();
var range = document.selection.createRange();
var rangelen = range.text.length;
range.moveStart ('character', -ctrl.value.length);
var start = range.text.length - rangelen;
return {'start': start, 'end': start + rangelen };
}
// IE >=9 and other browsers
else if (ctrl.selectionStart || ctrl.selectionStart == '0') {
return {'start': ctrl.selectionStart, 'end': ctrl.selectionEnd };
} else {
return {'start': 0, 'end': 0};
}
},
set :function (ctrl, start, end) {
// IE >= 9 and other browsers
if(ctrl.setSelectionRange)
{
ctrl.focus();
ctrl.setSelectionRange(start, end);
}
// IE < 9
else if (ctrl.createTextRange) {
var range = ctrl.createTextRange();
range.collapse(true);
range.moveEnd('character', end);
range.moveStart('character', start);
range.select();
}
}
};