使用TextRange獲取輸入框中光標(biāo)的位置的代碼
更新時間:2007年03月08日 00:00:00 作者:
TextRange是用來表現(xiàn)HTML元素中文字的對象,雖然我們平時不太常用這個對象,可是它卻在IE4.0中就已提供了。不過TextRange提供的調(diào)用方法卻都比較晦澀,那么我們能拿它做些什么呢?
TextRange的傳統(tǒng)用途是對用戶在Web頁上用鼠標(biāo)圈選的文字內(nèi)容的操作,比如變化、刪除、新增等。但其經(jīng)典的用途卻是,在Web頁面中查找文字(這個比較簡單)和獲取輸入框光標(biāo)的位置。其中后者又有可以衍生出很多更有用的用途,比如:限制輸入的MaskTextBox,其核心技術(shù)點就是獲取輸入框的光標(biāo)位置,然后使用正則表達(dá)式判斷輸入內(nèi)容。還有我后面會介紹的"使用方向鍵在輸入框矩陣中自然的導(dǎo)航",核心技術(shù)點也是獲取輸入框中的光標(biāo)位置。
獲取輸入框中的光標(biāo)位置的整個代碼其實很短,只是這些對象和方法不太常用而已。
<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)容,請參考MSDN。
這里說一下使用這個GetCursorPsn()方法后,會給輸入框操作帶來的副作用。對于輸入框<input type="text" onkeydown="GetCursorPsn(this)">,它將不能再使用Shift+左右這兩個方向鍵來選擇文本;對于<textarea onkeydown="GetCursorPsn(this)"></textarea>,將不能再使用Shift+上下左右四個方向鍵來選擇文本。因為代碼在獲取了當(dāng)前光標(biāo)到文本的startPoint后,調(diào)用rng.collapse(false);會改變文本筐內(nèi)文本的EditPoint。不過這個副作用基本不會給我們使用文本框帶來什么大的問題,所以基本不用太在意。
TextRange的傳統(tǒng)用途是對用戶在Web頁上用鼠標(biāo)圈選的文字內(nèi)容的操作,比如變化、刪除、新增等。但其經(jīng)典的用途卻是,在Web頁面中查找文字(這個比較簡單)和獲取輸入框光標(biāo)的位置。其中后者又有可以衍生出很多更有用的用途,比如:限制輸入的MaskTextBox,其核心技術(shù)點就是獲取輸入框的光標(biāo)位置,然后使用正則表達(dá)式判斷輸入內(nèi)容。還有我后面會介紹的"使用方向鍵在輸入框矩陣中自然的導(dǎo)航",核心技術(shù)點也是獲取輸入框中的光標(biāo)位置。
獲取輸入框中的光標(biāo)位置的整個代碼其實很短,只是這些對象和方法不太常用而已。
<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)容,請參考MSDN。
這里說一下使用這個GetCursorPsn()方法后,會給輸入框操作帶來的副作用。對于輸入框<input type="text" onkeydown="GetCursorPsn(this)">,它將不能再使用Shift+左右這兩個方向鍵來選擇文本;對于<textarea onkeydown="GetCursorPsn(this)"></textarea>,將不能再使用Shift+上下左右四個方向鍵來選擇文本。因為代碼在獲取了當(dāng)前光標(biāo)到文本的startPoint后,調(diào)用rng.collapse(false);會改變文本筐內(nèi)文本的EditPoint。不過這個副作用基本不會給我們使用文本框帶來什么大的問題,所以基本不用太在意。
相關(guān)文章
JavaScript 對象深入學(xué)習(xí)總結(jié)(經(jīng)典)
JavaScript中,除了五種原始類型(即數(shù)字,字符串,布爾值,null,undefined)之外的都是對象了,所以,不把對象學(xué)明白怎么繼續(xù)往下學(xué)習(xí)呢?本篇文章給大家分享javascript對象深入學(xué)習(xí)總結(jié),小伙伴們跟著小編一起深入學(xué)習(xí)吧2015-09-09
JavaScript運動框架 鏈?zhǔn)竭\動到完美運動(五)
這篇文章主要為大家詳細(xì)介紹了JavaScript運動框架的第五部分,鏈?zhǔn)竭\動到完美運動,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-05-05
再也不怕 JavaScript 報錯了,怎么看怎么處理都在這兒
這篇文章主要介紹了再也不怕 JavaScript 報錯了,怎么看怎么處理都在這兒,需要的朋友可以參考下2020-12-12
談?wù)勎覍avaScript原型和閉包系列理解(隨手筆記6)
這篇文章主要介紹我對JavaScript原型和閉包系列理解(隨手筆記6)的相關(guān)資料,需要的朋友可以參考下2015-12-12

