Подтвердить что ты не робот

SelectionStart-End с текстовыми полями

У меня эта неприятная проблема, я не могу получить начальный и конечный индекс выделенного текста в текстовом поле, все, что я получаю, это undefined следующим образом:

$('#myarea').selectionStart; // return undefined

Я сделал что-то не так?

4b9b3361

Ответ 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
});

Ответ 3

Для управления выбором текста я настоятельно рекомендую вам плагин fieldSelection

Ответ 4

Другой плагин, который вы могли бы использовать, и единственный, кого я знаю, правильно обрабатывает разрывы строк в IE, является моим собственным Rangy Inputs.