|
TextRange的傳統用途是對用戶在Web頁上用鼠標圈選的文字內容的操作,比如變化、刪除、新增等。但其經典的用途卻是,在Web頁面中查找文字(這個比較簡單)和獲取輸入框光標的位置。其中后者又有可以衍生出很多更有用的用途,比如:限制輸入的MaskTextBox,其核心技術點就是獲取輸入框的光標位置,然后使用正則表達式判斷輸入內容。還有我后面會介紹的"使用方向鍵在輸入框矩陣中自然的導航",核心技術點也是獲取輸入框中的光標位置。
獲取輸入框中的光標位置的整個代碼其實很短,只是這些對象和方法不太常用而已。
<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的具體用法,需要了解與其相關的一些內容,請參考MSDN。
這里說一下使用這個GetCursorPsn()方法后,會給輸入框操作帶來的副作用。對于輸入框<input type="text" onkeydown="GetCursorPsn(this)">,它將不能再使用Shift+左右這兩個方向鍵來選擇文本;對于<textarea onkeydown="GetCursorPsn(this)"></textarea>,將不能再使用Shift+上下左右四個方向鍵來選擇文本。因為代碼在獲取了當前光標到文本的startPoint后,調用rng.collapse(false);會改變文本筐內文本的EditPoint。不過這個副作用基本不會給我們使用文本框帶來什么大的問題,所以基本不用太在意。
JavaScript技術:使用TextRange獲取輸入框中光標的位置的代碼,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。