在TextArea中光标位置插入值

 
对于在TextArea中光标位置插入值,很多人都可能会想到用
document.selection.createRange().text=”要求插入的值” 的方法,但是对于一些在textArea中的光标位置插入值时,对于插入的值可能会要求在一个弹出窗体中,或者javascript做的弹出Div中进行编辑后或者相关操作(如录入一些条件后再插入时)这时候TextArea中的光标位置就不是原来的了,而且有可能无法得到正确的插入位置,可以考虑采用以下的办法解决。注本实例中js的写法,采用了prototype.js对应的写法,兼容IE与FireFox
 
 
在TextArea中onclick及onbluer时存下对应的textArea中原来的光标位置值,然后在插入值时,用记录的位置值去插入。
 
 
例如:
var ContentCurrentPostion=null; //记录当前位置,如果是IE记录的应该是一个rang范围,firefox则记录的是一个位置值
/****记录插入位置***/
var GetTextAreaPostion=function(obj)
{     
    if(document.selection)
    {
        obj.focus();
        ContentCurrentPostion=document.selection.createRange(); 
    }
    else if(obj.selectionStart||obj.selectionStart=='0'){
        var startPos=obj.selectionStart;
                   var endPos=obj.selectionEnd;
        ContentCurrentPostion=new Object();
        ContentCurrentPostion.startPos=startPos;
        ContentCurrentPostion.endPos=endPos;
    }
    else
    {
        ContentCurrentPostion=null;
    }   
}

 
<textarea class="fm_textarea_record" id="AddContent" name="Content" cols="50" rows="4" οnclick="GetTextAreaPostion(this)"></textarea>
 
 
比如说在弹出的Div中点击一个按钮时,或者页面上点击其它按钮插入值时调用如下方法:
var SetContent=function(value,id)
{
     var str=value;
   if(ContentCurrentPostion!=null)
   {
        $(id).focus();
        if(document.selection)
        {          
            ContentCurrentPostion.text=str;         }
        else
        {
            var startPos=ContentCurrentPostion.startPos;
                       var endPos=ContentCurrentPostion.endPos;                      
                       $(id).value=$(id).value.substring(0,startPos)+str+$(id).value.substring(endPos,$(id).value.length);
 
        }
    }
    else
    {
         $(id).value+=str;
    }   
};
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值