Sym - 一个用 Java 实现的现代化社区平台 • 源码注册

Pipe - 小而美的开源博客平台 • 体验皮肤
Solo - 一个用 Java 实现的博客系统,为你或你的团队创建个博客吧! • 源码下载
Wide - 一个基于 Web 的 Go 语言 IDE • 教程试用

在 textarea 中光标位置插入字符串

好久没晒代码了。今天心情不错,搬出来晒晒太阳。

回过头来看看,代码有问题,继续修改下。2012-10-24

<html>
    <body>
        <textarea onmouseup="getCursorInfo(this)" onkeyup="setPosition(this)">123456</textarea>
        <script>
            var getCursorInfo = function (textarea) {
                var result = {};
                if (textarea.setSelectionRange) { 
                    // W3C
                    result.end = textarea.selectionEnd;
                    result.start = textarea.selectionStart;
                    result.text = textarea.value.substring(result.start, result.end);
                } else if (document.selection) { 
                    // IE
                    var i = 0,
                    oS = document.selection.createRange(),
                    // Don't: oR = textarea.createTextRange()
                    oR = document.body.createTextRange();
                    oR.moveToElementText(textarea);
                    result.text = oS.text;
                    oS.getBookmark();
                    // object.moveStart(sUnit [, iCount])
                    // Return Value: Integer that returns the number of units moved.
                    for (i = 0; oR.compareEndPoints('StartToStart', oS) < 0 && oS.moveStart("character", -1) !== 0; i ++) {
                        // Why? You can alert(textarea.value.length)
                        if (textarea.value.charAt(i) == '/n') {
                            i ++;
                        }
                    }

                result.start = i;
                result.end = i + result.text.length;
            }

            return result;
        }

        var setPosition = function (textarea) {
            if (textarea.setSelectionRange) { 
                textarea.setSelectionRange(2, 6);
            } else {
                var oR = textarea.createTextRange();
                oR.collapse(true);
                oR.moveStart('character', 2);
                oR.moveEnd('character', 6);
                oR.select();
            }
        }
    &lt;/script&gt;
&lt;/body&gt;


欢迎注册黑客派社区,开启你的博客之旅。让学习和分享成为一种习惯!

留下你的脚步