在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;
}
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.