javascript取得textarea光标位置开始与结束位置

 代码如下 复制代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns=http://www.111cn.net>
<head>
<title>javascript获取textarea光标位置和内容的方法</title>
<meta http-equiv="content-type" content="text/html;charset=gb2312">
<style type="text/css">
body,td{font-family:verdana,arial,helvetica,sans-serif;font-size:12px;}
</style>
<script type="text/javascript">
    var start=0;
    var end=0;
    function add(){       
        var textBox = document.getElementById("ta");
        var pre = textBox.value.substr(0, start);
        var post = textBox.value.substr(end);
        textBox.value = pre + document.getElementById("inputtext").value + post;
    }
    function savePos(textBox){
        //如果是Firefox(1.5)的话,方法很简单
        if(typeof(textBox.selectionStart) == "number"){
            start = textBox.selectionStart;
            end = textBox.selectionEnd;
        }
        //下面是IE(6.0)的方法,麻烦得很,还要计算上'/n'
        else if(document.selection){
            var range = document.selection.createRange();
            if(range.parentElement().id == textBox.id){
                // create a selection of the whole textarea
                var range_all = document.body.createTextRange();
                range_all.moveToElementText(textBox);
                //两个range,一个是已经选择的text(range),一个是整个textarea(range_all)
                //range_all.compareEndPoints()比较两个端点,如果range_all比range更往左(further to the left),则                //返回小于0的值,则range_all往右移一点,直到两个range的start相同。
                // calculate selection start point by moving beginning of range_all to beginning of range
                for (start=0; range_all.compareEndPoints("StartToStart", range) < 0; start++)
                    range_all.moveStart('character', 1);
                // get number of line breaks from textarea start to selection start and add them to start
                // 计算一下/n
                for (var i = 0; i <= start; i ++){
                    if (textBox.value.charAt(i) == '/n')
                        start++;
                }
                // create a selection of the whole textarea
                 var range_all = document.body.createTextRange();
                 range_all.moveToElementText(textBox);
                 // calculate selection end point by moving beginning of range_all to end of range
                 for (end = 0; range_all.compareEndPoints('StartToEnd', range) < 0; end ++)
                     range_all.moveStart('character', 1);
                     // get number of line breaks from textarea start to selection end and add them to end
                     for (var i = 0; i <= end; i ++){
                         if (textBox.value.charAt(i) == '/n')
                             end ++;
                     }
                }
            }
        document.getElementById("start").value = start;
        document.getElementById("end").value = end;
    }
</script>
</head>
<body>
<form action="">
<table border="1" cellspacing="0" cellpadding="0">
    <tr>
        <td>start: <input type="text" id="start" size="3"></td>
        <td>end: <input type="text" id="end" size="3"></td>
    </tr>
    <tr>
        <td colspan="2">
            <textarea id="ta" onKeydown="savePos(this)" onKeyup="savePos(this)" onmousedown="savePos(this)" onmouseup="savePos(this)" onfocus="savePos(this)" rows="14" cols="50"></textarea>
        </td>
    </tr>
    <tr>
        <td><input type="text" id="inputtext"></td>
        <td><input type="button" onClick="add()" value="Add Text"></td>
    </tr>
</table>
</form>
</body>
</html>

时间: 2024-09-26 17:35:19

javascript取得textarea光标位置开始与结束位置的相关文章

JS在textarea光标处插入文本的小例子_javascript技巧

下面是代码: 复制代码 代码如下: --------------------------------------------------------------------------------<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html x

如何用Javascript获得TextArea中的光标位置

javascript|光标 小弟最近在写一个在线编辑器,UBB版的,由于没有使用弹出窗口,所以,在添加代码的时候,只能添在TextArea的最后面,无法在光标之前插入,于是在网上疯狂的找资料,工夫不负有心人,终于被我找到了如何获得TextArea中的位置,但是如果TextArea中有很多内容的时候,会显得很闪烁.其代码如下. function getPos(obj) { obj.focus(); var workRange=document.selection.createRange(); ob

javascript 获取Textarea 元素的光标位置代码

网页特效 获取textarea 元素的光标位置代码 <!doctype html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=gb2312" /> <title>demo : textarea 元素的光标位置&

JavaScript 获取/设置光标位置,兼容Input&amp;amp;&amp;amp;TextArea_javascript技巧

JavaScript 获取/设置光标位置,兼容Input&&TextArea: 单行文本框 输入位置: 多行文本框 Hi,CssRain!!! 输入位置:

js获取textarea光标位置方法(兼容ie,ff)

js获取textarea光标位置方法(兼容ie,ff) 网上一搜一大票,但在使用中发现一些问题,以下所有内容只在ie8中测试过 <textarea id="t2">123</textarea> 方法1: var srng = document.selection.createRange(); srng.moveStart('character', -t2.value.length); 使用这种方法把srng的其实位置移到t2的开始位置,咋一看这语句有问题,如果光

web前端-使用 window.getSelection() 方法获取鼠标划取部分的起始位置和结束位置的问题

问题描述 使用 window.getSelection() 方法获取鼠标划取部分的起始位置和结束位置的问题 项目需要对html内文章内容做颜色标记的功能,但是不能改写原html的内容. 现在想到的方案是鼠标划取文章内容的时候,使用js获取文章内容的起始位置和结束位置,存入数据库,下次再访问该文章的时候,使用数据库记录的起始位置和结束位置去刻画标记. 测试前端代码如下 <!DOCTYPE html> <html> <head> <script type="

javascript实现textarea打字机效果提示

非常不错的提示输入内容,动态的提示,给人亲切感 <textarea id="content" name="content" cols="70" rows="5" style="width:450px;height:50px" class="text" onchange="CHECKCONTENT()" onClick="javascript:flush

javascript实现textarea中tab键的缩排处理方法

  本文实例讲述了javascript实现textarea中tab键的缩排处理方法.分享给大家供大家参考.具体如下: 网上搜索了一下相关的解决方法,其它的有使用两三行javascript解决的,但都有一些小小的问题.还有使用JQuery的,也非常简洁. 本文的javascript代码实现了在TEXTAREA中输入TAB键并自动缩进的功能.不过这段代码在谷歌浏览器中不能正常执行,在 代码如下: sel =event.srcElement.document.selection.createRange

JavaScript让Textarea支持tab按键的方法

  本文实例讲述了JavaScript让Textarea支持tab按键的方法.分享给大家供大家参考.具体实现方法如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66