selectionStart-End с текстовыми областями - PullRequest
32 голосов
/ 03 апреля 2009

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

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

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

Ответы [ 4 ]

77 голосов
/ 03 апреля 2009

Попробуйте:

$('#myarea')[0].selectionStart;

Почему? Селектор jQuery возвращает не фактические элементы DOM, а упакованную коллекцию jQuery. jQuery делает фактические элементы DOM доступными в виде массива, поэтому, если вы хотите использовать 1-й сопоставленный элемент (и в данном случае единственный, так как он по идентификатору), вы бы сделали выше.

12 голосов
/ 11 июля 2016

Начиная с версии 1.6 jQuery, вы можете использовать .prop () метод:

Получить:

// 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
});
2 голосов
/ 03 апреля 2009

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

0 голосов
/ 06 августа 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...