Обработчик или источник события select

.select()

Устанавливает обработчик выделения текста внутри элемента или , либо, запускает это событие. Данное событие может происходить только в элементах <textarea> и <input type="text">. Метод имеет три варианта использования:

.select(handler(eventObject)):jQuery1.0

Устанавливает функцию handler в качестве обработчика события select, на выбранные элементы.
Метод является аналогом bind("select", handler(eventObject)).

handler(eventObject) — функция, которая будет установлена в качестве обработчика. При вызове она будет получать объект события eventObject.

.select(eventData, handler(eventObject)):jQuery1.4.3

Метод отличается от предыдущего возможностью передавать в обработчик дополнительные данные.
Является аналогом bind("select", eventData, handler(eventObject)).

handler(eventObject) — см. выше.
eventData — дополнительные данные, передаваемые в обработчик. Они должны быть представлены объектом в формате: {fName1:value1, fName2:value2, ...}.

.select():jQuery1.0

Вызывает событие select, у выбранных элементов страницы. Метод является аналогом trigger("select").

Убрать установленный обработчик можно с помощью метода unbind().

Все три варианта использования метода, являются аналогами других методов (см. выше), поэтому все подробности использования select(), можно найти в описании этих методов.

В случае выделения текста с помощью мыши, браузеры вызывают событие select при завершении выделения. Если выделение происходит с помощью нажатия клавиш ← ↑ → ↓ при зажатом shift'е, то событие будет происходить при каждом отпускании клавиши со стрелкой.

Для того, чтобы получить выделенную часть текста в разных браузерах требуются разные средства. В FireFox и Google Chrome выделенную часть даст метод window.getSelection() или document.getSelection(), в то время как IE и Opera предоставят нужный текст при вызове метода document.selection.createRange(). Кроссбраузерный вариант будет выглядеть так:

function selectedText()
{
  if(window.getSelection)
     txt = window.getSelection().toString();
  else if(document.getSelection)
    txt = document.getSelection();                
  else if(document.selection)
    txt = document.selection.createRange().text;
 
  return txt;
}

Отметим, что функция selectedText() будет работать не только для <textarea> и <input type="text">, она будет возвращать выделенный текст, в каком бы элементе (элементах) он не находился.

Пример

// установим обработчик события select, элементу с идентификатором foo
$('#foo').select(function(){
  alert('Внутри элемента foo, пользователем был выделен текст.');
});
 
// вызовем событие select на элементе foo
$('#foo').select();
 
// установим еще один обработчик события select, на этот раз элементам 
// с классом block. В обработчик передадим дополнительные данные
$('.block').select({a:12, b:"abc"}, function(eventObject){
  var externalData = "a=" + eventObject.data.a + ", b=" + eventObject.data.b;
  alert('Внутри элемента с классом block был выделен текст'+
        'В обработчик этого события переданы данные: ' + externalData );
});

Ссылки

Поисковые ключи:
  • выделение текста
  • текст был выделен
  • обработка события select
  • обработчик события select
  • текст был выделен
  • выделение текста
  • .select()
  • select()