使用TextRange獲取輸入框中光標(biāo)的位
更新時(shí)間:2006年10月14日 00:00:00 作者:
TextRange是用來(lái)表現(xiàn)HTML元素中文字的對(duì)象,雖然我們平時(shí)不太常用這個(gè)對(duì)象,可是它卻在IE4.0中就已提供了。不過TextRange提供的調(diào)用方法卻都比較晦澀,那么我們能拿它做些什么呢?
TextRange的傳統(tǒng)用途是對(duì)用戶在Web頁(yè)上用鼠標(biāo)圈選的文字內(nèi)容的操作,比如變化、刪除、新增等。但其經(jīng)典的用途卻是,在Web頁(yè)面中查找文字(這個(gè)比較簡(jiǎn)單)和獲取輸入框光標(biāo)的位置。其中后者又有可以衍生出很多更有用的用途,比如:限制輸入的MaskTextBox,其核心技術(shù)點(diǎn)就是獲取輸入框的光標(biāo)位置,然后使用正則表達(dá)式判斷輸入內(nèi)容。還有我后面會(huì)介紹的"使用方向鍵在輸入框矩陣中自然的導(dǎo)航",核心技術(shù)點(diǎn)也是獲取輸入框中的光標(biāo)位置。
獲取輸入框中的光標(biāo)位置的整個(gè)代碼其實(shí)很短,只是這些對(duì)象和方法不太常用而已。
<script language="javascript">
function GetCursorPsn(txb)
{
var slct = document.selection;
var rng = slct.createRange();
txb.select();
rng.setEndPoint("StartToStart", slct.createRange());
var psn = rng.text.length;
rng.collapse(false);
rng.select();
return psn;
}
</script>
要徹底的弄清楚TextRange的具體用法,需要了解與其相關(guān)的一些內(nèi)容,請(qǐng)參考MSDN。
這里說(shuō)一下使用這個(gè)GetCursorPsn()方法后,會(huì)給輸入框操作帶來(lái)的副作用。對(duì)于輸入框<input type="text" onkeydown="GetCursorPsn(this)">,它將不能再使用Shift+左右這兩個(gè)方向鍵來(lái)選擇文本;對(duì)于<textarea onkeydown="GetCursorPsn(this)"></textarea>,將不能再使用Shift+上下左右四個(gè)方向鍵來(lái)選擇文本。因?yàn)榇a在獲取了當(dāng)前光標(biāo)到文本的startPoint后,調(diào)用rng.collapse(false);會(huì)改變文本筐內(nèi)文本的EditPoint。不過這個(gè)副作用基本不會(huì)給我們使用文本框帶來(lái)什么大的問題,所以基本不用太在意。
TextRange的傳統(tǒng)用途是對(duì)用戶在Web頁(yè)上用鼠標(biāo)圈選的文字內(nèi)容的操作,比如變化、刪除、新增等。但其經(jīng)典的用途卻是,在Web頁(yè)面中查找文字(這個(gè)比較簡(jiǎn)單)和獲取輸入框光標(biāo)的位置。其中后者又有可以衍生出很多更有用的用途,比如:限制輸入的MaskTextBox,其核心技術(shù)點(diǎn)就是獲取輸入框的光標(biāo)位置,然后使用正則表達(dá)式判斷輸入內(nèi)容。還有我后面會(huì)介紹的"使用方向鍵在輸入框矩陣中自然的導(dǎo)航",核心技術(shù)點(diǎn)也是獲取輸入框中的光標(biāo)位置。
獲取輸入框中的光標(biāo)位置的整個(gè)代碼其實(shí)很短,只是這些對(duì)象和方法不太常用而已。
<script language="javascript">
function GetCursorPsn(txb)
{
var slct = document.selection;
var rng = slct.createRange();
txb.select();
rng.setEndPoint("StartToStart", slct.createRange());
var psn = rng.text.length;
rng.collapse(false);
rng.select();
return psn;
}
</script>
要徹底的弄清楚TextRange的具體用法,需要了解與其相關(guān)的一些內(nèi)容,請(qǐng)參考MSDN。
這里說(shuō)一下使用這個(gè)GetCursorPsn()方法后,會(huì)給輸入框操作帶來(lái)的副作用。對(duì)于輸入框<input type="text" onkeydown="GetCursorPsn(this)">,它將不能再使用Shift+左右這兩個(gè)方向鍵來(lái)選擇文本;對(duì)于<textarea onkeydown="GetCursorPsn(this)"></textarea>,將不能再使用Shift+上下左右四個(gè)方向鍵來(lái)選擇文本。因?yàn)榇a在獲取了當(dāng)前光標(biāo)到文本的startPoint后,調(diào)用rng.collapse(false);會(huì)改變文本筐內(nèi)文本的EditPoint。不過這個(gè)副作用基本不會(huì)給我們使用文本框帶來(lái)什么大的問題,所以基本不用太在意。
您可能感興趣的文章:
- 教學(xué)演示-UBB,剪貼板,textRange及其他
- 光標(biāo)定位等TextRange的操作的范例代碼
- Using the TextRange Object
- 教學(xué)演示-UBB,剪貼板,textRange及其他
- 使用TextRange獲取輸入框中光標(biāo)的位置的代碼
- js createRange與createTextRange的一些用法實(shí)例
- createTextRange()的使用示例含文本框選中部分文字內(nèi)容
- 處理文本部分內(nèi)容的TextRange對(duì)象應(yīng)用實(shí)例
- JavaScript中textRange對(duì)象使用方法小結(jié)
相關(guān)文章
JavaScript 抽獎(jiǎng)效果實(shí)現(xiàn)代碼 數(shù)字跳動(dòng)版
直接上代碼吧,效果可以復(fù)制了去看2009-11-11實(shí)例詳解JSON取值(key是中文或者數(shù)字)方式
本文通過實(shí)例詳解JSON取值(key是中文或者數(shù)字)方式,非常不錯(cuò),具有參考借鑒價(jià)值,需要的的朋友參考下吧2017-08-08前端實(shí)現(xiàn)(excel)xlsx文件預(yù)覽的詳細(xì)步驟
excel的預(yù)覽庫(kù)有不少,也都很強(qiáng)大,但是能很簡(jiǎn)單實(shí)現(xiàn),下面這篇文章主要給大家介紹了關(guān)于前端實(shí)現(xiàn)(excel)xlsx文件預(yù)覽的詳細(xì)步驟,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-03-03electron實(shí)現(xiàn)qq快捷登錄的方法示例
這篇文章主要介紹了electron實(shí)現(xiàn)qq快捷登錄的方法示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2018-10-10原生js實(shí)現(xiàn)水平方向無(wú)縫滾動(dòng)
這篇文章主要為大家詳細(xì)介紹了原生js實(shí)現(xiàn)水平方向無(wú)縫滾動(dòng)的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01js 連續(xù)賦值的簡(jiǎn)單實(shí)現(xiàn)
下面小編就為大家?guī)?lái)一篇js 連續(xù)賦值的簡(jiǎn)單實(shí)現(xiàn)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2016-06-06