Javascript получить выделенный текст из любого textinput / textarea на странице - PullRequest
6 голосов
/ 20 июня 2011

Как получить выделенный текст из текстового поля / текстовой области, если я не знаю, какой из них активен (сфокусирован). Я пытаюсь создать небольшой букмарклет, который будет корректировать выбранный текст при любом типе ввода на странице.

1 Ответ

18 голосов
/ 20 июня 2011

Для выбора вы хотите selectionStart и selectionEnd.

Что касается текущего элемента, используйте document.activeElement.

Таким образом, в качестве комбинации вы можете использовать: http://jsfiddle.net/rBPte/1/.

Как отметил Тим Даун, вам потребуется более сложное решение для Internet Explorer версии 8 или ниже: Положение каретки в текстовой области, в символах с начала

function getText(elem) { // only allow input[type=text]/textarea
    if(elem.tagName === "TEXTAREA" ||
       (elem.tagName === "INPUT" && elem.type === "text")) {
        return elem.value.substring(elem.selectionStart,
                                    elem.selectionEnd);
        // or return the return value of Tim Down's selection code here
    }
    return null;
}

setInterval(function() {
    var txt = getText(document.activeElement);
    document.getElementById('div').innerHTML =
        txt === null ? 'no input selected' : txt;
}, 100);
...