在TextArea中光标位置插入值

本文介绍了一种在TextArea中精确记录并恢复光标位置的方法,以便在弹出窗口或其他交互后准确地插入文本。该方法兼容IE和Firefox浏览器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 
对于在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" onclick="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;
    }   
};
 
textarea 光标位置插入是指在文本区域(textarea中的光标位置插入新的文本或内容。 要实现在指定位置插入文本,可以通过以下步骤进行: 1. 获取文本区域的光标位置,可以使用textarea元素的selectionStart和selectionEnd属性来获取。 2. 将要插入的文本与原有文本分成两个段落,即左侧和右侧。 3. 将左侧段落与要插入的文本拼接起来,再拼接右侧段落,形成新的文本。 4. 将新的文本重新赋给文本区域。 以下是一个简单的示例代码: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Textarea光标位置插入示例</title> <script> function insertText() { var textarea = document.getElementById("myTextarea"); var position = textarea.selectionStart; var textToInsert = "新的文本"; var originalText = textarea.value; var newText = originalText.slice(0, position) + textToInsert + originalText.slice(position); textarea.value = newText; } </script> </head> <body> <textarea id="myTextarea"></textarea> <button onclick="insertText()">在光标位置插入</button> </body> </html> ``` 在上述示例中,我们通过获取textarea元素的selectionStart属性获得光标位置,并使用slice函数将原有文本按照光标位置拆分成左右两个段落。接着,我们将新的文本插入到左侧段落中,并再次拼接上右侧段落,最后将新的文本赋给textarea的value属性即可。 这样,当点击按钮时,就能在光标位置插入指定的新文本。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值