JQuery обработчик события - функция запуска по определенному ключу и действию - PullRequest
0 голосов
/ 28 марта 2010

Фоновая история: когда пользователь выделяет часть текста в текстовом поле с помощью мыши (помечает его вручную) и затем нажимает клавишу «alt», срабатывает определенная функция.

Мои вопросы:

  • Как я могу вызвать функцию, когда пользователь нажимает клавишу (на своей клавиатуре)?
  • Как сохранить часть выделенного текста и использовать его как параметр для этой функции?

Я пробовал искать в Интернете, но не нашел хороших ответов, но я также был бы очень благодарен за ссылки.

1 Ответ

3 голосов
/ 28 марта 2010
$(document).keydown(function(event){
    if (event.altKey) {
        var text = $.trim(getSelectedText());
        if (text.length) {
            console.log(text);
        }
    }
});

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

Если вы хотите получить выделенный текст при вводе текста или текстовой области, вы можете сделать это:

$(':text, textarea').keydown(function(event){
    if (event.altKey) {
        var text = '';
        if ('selectionStart' in this){
            var length = this.selectionEnd - this.selectionStart;
            text = $.trim($(this).val().substr(this.selectionStart, length));
        } else if (document.selection) {
            text = $.trim(document.selection.createRange().text);
        }
        if (text.length) {
            console.log(text);
        }
    }
});
...