天天看點

使用TextRange擷取輸入框中光标的位置

 TextRange是用來表現HTML元素中文字的對象,雖然我們平時不太常用這個對象,可是它卻在IE4.0中就已提供了。不過TextRange提供的調用方法卻都比較晦澀,那麼我們能拿它做些什麼呢?

    擷取輸入框中的光标位置的整個代碼其實很短,隻是這些對象和方法不太常用而已。

使用TextRange擷取輸入框中光标的位置

<script language="javascript">

使用TextRange擷取輸入框中光标的位置

function GetCursorPsn(txb)

使用TextRange擷取輸入框中光标的位置

{

使用TextRange擷取輸入框中光标的位置

    var slct = document.selection;

使用TextRange擷取輸入框中光标的位置

    var rng = slct.createRange();

使用TextRange擷取輸入框中光标的位置

    txb.select();

使用TextRange擷取輸入框中光标的位置

    rng.setEndPoint("StartToStart", slct.createRange());

使用TextRange擷取輸入框中光标的位置

    var psn = rng.text.length;

使用TextRange擷取輸入框中光标的位置

    rng.collapse(false);

使用TextRange擷取輸入框中光标的位置

    rng.select();

使用TextRange擷取輸入框中光标的位置

    return psn;

使用TextRange擷取輸入框中光标的位置

}

使用TextRange擷取輸入框中光标的位置

</script>

    這裡說一下使用這個GetCursorPsn()方法後,會給輸入框操作帶來的副作用。對于輸入框<input

type="text"

onkeydown="GetCursorPsn(this)">,它将不能再使用Shift+左右這兩個方向鍵來選擇文本;對于<textarea

onkeydown="GetCursorPsn(this)"></textarea>,将不能再使用Shift+上下左右四個方向鍵來選擇文本。因為代碼在擷取了目前光标到文本的startPoint後,調用rng.collapse(false);會改變文本筐内文本的EditPoint。不過這個副作用基本不會給我們使用文本框帶來什麼大的問題,是以基本不用太在意。 

本文轉自部落格園鳥食軒的部落格,原文連結:http://www.cnblogs.com/birdshome/,如需轉載請自行聯系原部落客。 

繼續閱讀