在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;
    }   
};
 
發佈了39 篇原創文章 · 獲贊 12 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章