新聞中心
這里和大家分享一下如何用Javascript獲取textarea中的光標(biāo)位置,相信本文介紹一定會讓你有所收獲的。

創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站制作、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的南昌網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
用Javascript獲取textarea中的光標(biāo)位置
Javascript一向以他的靈活隨意而著稱,這也使得它的功能可以非常的強(qiáng)大,而由于沒有比較好的調(diào)試工具,又使得它使用起來困難重重,尤其使對于一些初學(xué)者,更是感覺到無從下手。今天探討的問題是用javascript獲取textarea中光標(biāo)的位置。對于寫javascript寫網(wǎng)頁編輯器的人來說,獲取textarea中的光標(biāo)位置是一個(gè)非常重要的問題,而往往很多人在這個(gè)地方不知所措,找不到好的辦法。昨天我在網(wǎng)上找到了一段javascript代碼,本來不想把原版放在這里的,就是因?yàn)樘柿耍挛医o改壞了,所以還是原版放在這里吧。
- varstart=0;
- varend=0;
- functionadd(){
- vartextBox=document.getElementById("ta");
- varpre=textBox.value.substr(0,start);
- varpost=textBox.value.substr(end);
- textBox.value=pre+document.
- getElementById("inputtext").value+post;
- }
- functionsavePos(textBox){
- //如果是Firefox(1.5)的話,方法很簡單
- if(typeof(textBox.selectionStart)=="number"){
- start=textBox.selectionStart;
- end=textBox.selectionEnd;
- }
- //下面是IE(6.0)的方法,麻煩得很,還要計(jì)算上'\n'
- elseif(document.selection){
- varrange=document.selection.createRange();
- if(range.parentElement().id==textBox.id){
- //createaselectionofthewholetextarea
- varrange_all=document.body.createTextRange();
- range_all.moveToElementText(textBox);
- //兩個(gè)range,一個(gè)是已經(jīng)選擇的text(range),
- 一個(gè)是整個(gè)textarea(range_all)
- //range_all.compareEndPoints()比較兩個(gè)端點(diǎn),
- 如果range_all比range更往左(furthertotheleft),
- 則//返回小于0的值,則range_all往右移一點(diǎn),直到兩個(gè)range的start相同。
- //calculateselectionstartpointbymoving
- beginningofrange_alltobeginningofrange
- for(start=0;range_all.compareEndPoints
- ("StartToStart",range)<0;start++)range_all.moveStart('character',1);
- //getnumberoflinebreaksfromtextareastarttose
- lectionstartandaddthemtostart
- //計(jì)算一下\n
- for(vari=0;i<=start;i++){
- if(textBox.value.charAt(i)=='\n')
- start++;
- }
- //createaselectionofthewholetextarea
- varrange_all=document.body.createTextRange();
- range_all.moveToElementText(textBox);
- //calculateselectionendpointbymovingbeginningofrange_alltoendofrange
- for(end=0;range_all.compareEndPoints('StartToEnd',range)<0;end++)
- range_all.moveStart('character',1);
- //getnumberoflinebreaksfromtextareastarttoselectionendandaddthemtoend
- for(vari=0;i<=end;i++){
- if(textBox.value.charAt(i)=='\n')
- end++;
- }
- }
- }
- document.getElementById("start").value=start;
- document.getElementById("end").value=end;
- }
下面是在頁面中調(diào)用js代碼的方法:
- cellspacing="0"cellpadding="0">
start: - id="start"size="3"/>
end: - id="end"size="3"/>
- onKeyup="savePos(this)"
- onmousedown="savePos(this)"
- onmouseup="savePos(this)"
- onfocus="savePos(this)"
- rows="14"cols="50">
- id="inputtext"/>
- onClick="add()"value="AddText"/>
網(wǎng)頁標(biāo)題:技術(shù)分享Javascript如何獲取textarea中光標(biāo)位置
URL地址:http://fisionsoft.com.cn/article/cosihhs.html


咨詢
建站咨詢
