使用Javascript在textarea中的光标处插入文本

时间:2010-07-22 11:26:13

标签: javascript cross-browser textarea cursor

我已经浏览了网络上的解决方案,还有一些,但他们似乎都将代码拆分为支持IE和Firefox。我想知道是否有更优雅的方式可以在每个浏览器上工作,在光标处插入一些文本在textarea。

非常感谢,

2 个答案:

答案 0 :(得分:21)

不,没有。 IE有TextRange个对象来完成这项工作。 IE> = 9,最后一段时间的其他所有内容在textareas和文本输入上都有selectionStartselectionEnd属性。这个特殊的任务也不错:以下将删除当前选择(如果存在),在插入符号处插入文本并在插入的文本后立即重新定位插入符号,在所有主流浏览器中:

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();
    }
}

答案 1 :(得分:0)

实现两者:支持FF的代码和支持IE的代码。您可以使用Frameworks为两个浏览器编写代码。比框架将完成分割浏览器之间差异的工作。

很遗憾,但浏览器并非100%兼容!