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

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

JavaScript: textarea cursor

var getCursorEndPosition = function (textarea) {
        textarea.focus();    // 首先当然要设为选中了
        if (textarea.setSelectionRange) { 
            // W3C
            return textarea.selectionEnd;
        } else if (document.selection) { 
            // IE
            var i = 0,
            oS = document.selection.createRange(),    // 当前选中区域,记录了当前光标起始和结束位置的信息,可和 oR 进行对比得出当前光标位置。
            oR = document.body.createTextRange();   // 不可使用 oR = textarea.createTextRange(), 否则不可与 oS 进行 compareEndPoints。
            oR.moveToElementText(textarea);
            oS.getBookmark();
            for (i = 0; oR.compareEndPoints("StartToStart", oS) < 0 && oS.moveStart("character", -1) !== 0; i ++) {
                if (textarea.value.charAt(i) == '/n') {
                    // 换行 +1。
                    i ++;
                }
            }
            return i;
        }
    }

var insertString = function () {
            var $comment = $("#comment");
            var endPosition = getCursorEndPosition($comment[0]);
            var key = this.className,
            textValue  = $comment[0].value;
            textValue = textValue.substring(0, endPosition) + key + textValue.substring(endPosition, textValue.length);
            $("#comment" + name).val(textValue);

            if ($.browser.msie) {
                // 出现换行时,位置应 -1。     
                endPosition -= textValue.split('/n').length - 1;
                var oR = $comment[0].createTextRange();
                oR.collapse(true);
                oR.moveStart('character', endPosition + 6);
                oR.select();
            } else {
                $comment[0].setSelectionRange(endPosition + 6, endPosition + 6);
            }
        });
    }

 

 



本文是使用 B3log SoloVanessa 进行同步发布的

转载于:https://www.cnblogs.com/ajuanabc/archive/2010/12/24/2462892.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值