У меня эта неприятная проблема, я не могу получить начальный и конечный индекс выделенного текста в текстовом поле, все, что я получаю, это undefined следующим образом:
$('#myarea').selectionStart; // return undefined
Я сделал что-то не так?
Ответ 1
Try:
$('#myarea')[0].selectionStart;
Почему? Селектор jQuery не возвращает фактические элементы DOM, кроме обернутой коллекции jQuery. jQuery делает фактические элементы DOM доступными как массив, поэтому, если вы хотите использовать 1-й согласованный элемент (и в этом случае единственный, так как он по ID), вы бы сделали выше.
Ответ 2
Так как jQuery версии 1.6, вы можете использовать метод .prop():
Get:
// always start at 0
var start = $('#myarea').prop('selectionStart');
var end = $('#myarea').prop('selectionEnd');
Set:
$('#myarea').prop('selectionStart', 10);
$('#myarea').prop('selectionEnd', 15);
// or short hand by
$('#myarea').prop({
'selectionStart': 10,
'selectionEnd': 15
});
Другой плагин, который вы могли бы использовать, и единственный, кого я знаю, правильно обрабатывает разрывы строк в IE, является моим собственным Rangy Inputs.