如题,在一个textbox中有如下文字
"JS如何从textbox中_间插入内容"按一个Button可以在textbox里插入 其他文字
如何可以控制文字插入在光标所在处?
比如说我按button插入文字 “测试”
如何让测试插入到红色的位置?

解决方案 »

  1.   

    你是不是说要插在之前的光标处?这个没法做,至少俺不会做,在你点击鼠标时,textbox已经失去焦点了,所以也没光标位置,没法定位...
      

  2.   

    form程序里可以。web里面没做过
      

  3.   

    如果要插到特定的位置,你只能是先把text1.value取到,然后判断那个位置插入。
    http://blog.csdn.net/greatverve/archive/2008/12/18/3546949.aspx
      

  4.   

    InputControl = new Object();
    InputControl.InsertText = function(text,autoview)//autoview 是否自动滚动视图
        {
            this.focus(); 
            var range = document.selection.createRange();
            range.text = text;
            autoview = autoview ==null ? false : true;
            range.scrollIntoView(autoview);
        }//如
    InputControl.InsertText.call(yourcontrol,"我要替换",true)希望正和你意思...
    相关还有许多操作
    再跟几个//获取选中文本
        InputControl.GetSelectedText = function()
        {
            this.focus();
            return document.selection.createRange().text;
        }
        
        //选中目标文本的从startpos到endpos之间的字符串
        //selectText.call(someTextObject,startpos,endpos)
        InputControl.SelectText = function(startpos,endpos)
        {
            var range = this.createTextRange();
            var length = this.value.length;
            if(length < 1)
            {
                startpos = 0;
                endpos = 0;
            }
            else
            {
                startpos = startpos < 1 ? 0 : startpos;
                endpos =  startpos > length ? 1- startpos : 1 - length + endpos;
            }
            range.moveStart('character',startpos);
            range.moveEnd('character',endpos); 
            range.select();
            return range.text;
        }
        
        //在目标文本中设置输入焦点
        InputControl.SetFocusPos = function(pos)
        {
            var range =this.createTextRange(); 
            range.move('character',pos);
            range.select(); 
        }
        //输入文尾巴
        InputControl.SetFocusEnd = function()
        {
            var range =this.createTextRange(); 
            range.collapse(false);
            range.select(); 
        }
        //输入文本开始
        InputControl.SetFocusStart = function()
        {
            var range =this.createTextRange(); 
            range.collapse(true);
            range.select(); 
        }
      

  5.   

    这是我现在这个项目实现的。
    function InputValue(val,num)
            {
                var txt=document.getElementById("txtComment");
                 getPos(txt,true,val,num);
            }
            function BackSpace()
            {
                var txb=document.getElementById("txtComment");
                getPos(txb,false,'',0);
            }
            //得到光标的位置并实现输入或删除
            function getPos(txb,type,val,num)
            {
                txb.focus();
                var slct = document.selection;
                var rng = slct.createRange();
                txb.select();
                rng.setEndPoint("StartToStart", slct.createRange());
                var psn = rng.text.length;
                rng.collapse(false);
                rng.select();
                
                if(type)
                {//输入
                    txb.value=txb.value.substr(0,psn)+val+txb.value.substr(psn,txb.value.length-psn);
                    setPos(txb,psn+num);
                }  
                else
                {//后退
                    txb.value=txb.value.substr(0,psn-1)+txb.value.substr(psn,txb.value.length-psn);
                    setPos(txb,psn-1);
                }    
            }
            //输入或删除完毕,光标相应移动
            function setPos(e,num)
            {
                var r =e.createTextRange();
                r.moveStart('character',num);
                r.collapse(true);
                r.select();
            } 
      

  6.   

    function getCaret(tst) 

    var txb = document.getElementById("TextBox1");//根据ID获得对象 
    var text = txb.value;
    var pos = 0;//设置初始位置 
    txb.focus();//输入框获得焦点,这句也不能少,不然后面会出错,血的教训啦. 
    var s = txb.scrollTop;//获得滚动条的位置 
    var r = document.selection.createRange();//创建文档选择对象 
    var t = txb.createTextRange();//创建输入框文本对象 
    t.collapse(true);//将光标移到头 
    t.select();//显示光标,这个不能少,不然的话,光标没有移到头.当时我不知道,搞了十几分钟 
    var j = document.selection.createRange();//为新的光标位置创建文档选择对象 
    r.setEndPoint("StartToStart",j);//在以前的文档选择对象和新的对象之间创建对象,妈的,不好解释,我表达能力不算太好.有兴趣自己去看msdn的资料 
    var str =r.text;//获得对象的文本 
    var re = new RegExp("[\n]","g");//过滤掉换行符,不然你的文字会有问题,会比你的文字实际长度要长一些.搞死我了.我说我得到的数字怎么总比我的实际长度要长. 
    str = str.replace(re,"");//过滤 
    pos = str.length;//获得长度.也就是光标的位置 
    r.collapse(false); 
    r.select();//把光标恢复到以前的位置 
    txb.scrollTop = s;//把滚动条恢复到以前的位置 text=text.substring(0,pos)+tst+text.substring(pos,text.length);
    document.getElementById("TextBox1").value=text;
    } 网上找到滴测试能用大家分享