如果光标位于其他文本,则应在文本区域中的文本区域插入文本

时间:2012-07-06 09:57:54

标签: javascript

如果放置光标,我想在光标位置的textarea中插入文本,否则文本应该附加在IE中现有文本的末尾。

我已经使用过这个在mozilla中工作正常的函数,但不是在它附加在现有文本的起始位置的情况下。

function insertAtCursor(text) {   

    var field = document.frmMain.Expression;

    if (document.selection) {

        field.focus();

        sel = document.selection.createRange();
        sel.text = text;
    }
}

我想在现有文本的末尾附加文本,即如果没有放置光标。

1 个答案:

答案 0 :(得分:3)

检查字段是否已经具有焦点,如果是,则使用从选择中生成的TextRange。如果没有,请为该字段创建TextRange并将其折叠到最后。

您似乎没有任何代码可以在其他浏览器中的光标处插入文本,但也许您可以将其留下。

现场演示:http://jsbin.com/ixoyes/2

代码:

function insertAtCursor(text) {   
    var field = document.frmMain.Expression;

    if (document.selection) {
        var range = document.selection.createRange();

        if (!range || range.parentElement() != field) {
            field.focus();
            range = field.createTextRange();
            range.collapse(false);
        }
        range.text = text;
        range.collapse(false);
        range.select();
    }
}