Вставка текста в курсор в текстовой области, с Javascript - PullRequest
6 голосов
/ 22 июля 2010

Я искал в Интернете решения, и есть некоторые, но все они, кажется, делят код на поддержку IE и Firefox. Мне было интересно, есть ли более элегантный способ, который работал бы в каждом браузере, чтобы вставить текст в курсор в текстовой области.

Большое спасибо,

Rich

Ответы [ 2 ]

21 голосов
/ 22 июля 2010

Нет, нет. IE имеет TextRange объекты для выполнения этой работы. IE> = 9 и все остальное в течение последнего долгого времени имеет свойства selectionStart и selectionEnd для текстовых полей и текстовых вводов. Эта конкретная задача не так уж плоха: следующее удалит текущий выбор (если он существует), вставит текст в каретку и переместит каретку сразу после вставленного текста во всех основных браузерах:

function insertTextAtCursor(el, text) {
    var val = el.value, endIndex, range;
    if (typeof el.selectionStart != "undefined" && typeof el.selectionEnd != "undefined") {
        endIndex = el.selectionEnd;
        el.value = val.slice(0, el.selectionStart) + text + val.slice(endIndex);
        el.selectionStart = el.selectionEnd = endIndex + text.length;
    } else if (typeof document.selection != "undefined" && typeof document.selection.createRange != "undefined") {
        el.focus();
        range = document.selection.createRange();
        range.collapse(false);
        range.text = text;
        range.select();
    }
}
0 голосов
/ 22 июля 2010

реализует и код, поддерживающий FF, и код, поддерживающий IE.Вы можете использовать Frameworks для написания кода для обоих браузеров.Чем Framework выполнит работу по разделению различий между браузерами.

Это печально, но браузеры не на 100% совместимы!

...