這篇“Javascript中如何利用textarea獲取光標(biāo)位置”文章的知識(shí)點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價(jià)值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來(lái)看看這篇“Javascript中如何利用textarea獲取光標(biāo)位置”文章吧。
我們提供的服務(wù)有:成都網(wǎng)站制作、做網(wǎng)站、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、原州ssl等。為上千余家企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的原州網(wǎng)站制作公司
用Javascript獲取textarea中的光標(biāo)位置
Javascript一向以他的靈活隨意而著稱,這也使得它的功能可以非常的強(qiáng)大,而由于沒(méi)有比較好的調(diào)試工具,又使得它使用起來(lái)困難重重,尤其使對(duì)于一些初學(xué)者,更是感覺(jué)到無(wú)從下手。今天探討的問(wèn)題是用javascript獲取textarea中光標(biāo)的位置。對(duì)于寫javascript寫網(wǎng)頁(yè)編輯器的人來(lái)說(shuō),獲取textarea中的光標(biāo)位置是一個(gè)非常重要的問(wèn)題,而往往很多人在這個(gè)地方不知所措,找不到好的辦法。昨天我在網(wǎng)上找到了一段javascript代碼,本來(lái)不想把原版放在這里的,就是因?yàn)樘柿?,怕我給改壞了,所以還是原版放在這里吧。
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)的話,方法很簡(jiǎn)單 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相同。 //calculateselectionstartpointbymovingbeginningofrange_alltobeginningofrange for(start=0;range_all.compareEndPoints("StartToStart",range)<0;start++)range_all.moveStart('character',1); //getnumberoflinebreaksfromtextareastarttoselectionstartandaddthemtostart //計(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; }
下面是在頁(yè)面中調(diào)用js代碼的方法:
start: end:
以上就是關(guān)于“Javascript中如何利用textarea獲取光標(biāo)位置”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對(duì)大家有幫助,若想了解更多相關(guān)的知識(shí)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。