博客 / 詳情

返回

H5輸入區域光標控制

什麼是光標?

頁面上輸入區域(比如input和textarea)中閃爍的光標其實是一個選區,也就是選區的左邊界和右邊界直接形成的選區。

非IE瀏覽器

輸入框結點input=document.getElementById('#input')有兩個屬性: selectionStart、selectionEnd,分別代表選區開始位置,選區結束位置。

通過修改這兩個值就可以形成選區,寬度為0也就實現了光標的位置控制和獲取。

IE瀏覽器

IE瀏覽器提供的API更加豐富:createTextRange()、 document.selection.createRange()、moveStart() 、moveEnd() 、move() 、collapse() 、text 、select()。

創建選區對象

var range = input.createTextRange();

一些操作

collapse

range.collapse(boolean);

可以傳入一個布爾值作為參數,參數默認值為true,指示向左還是向右壓縮。

moveStart

range.moveStart(param1,param2);

第一個參數可選值有 character、word、sentence、textedit. 比如character,即根據字符來偏移。第二個參數代表偏移的多少,正負表示方向。

moveEnd

range.moveEnd(param1,param2);

和上面那個方法參數一樣,不同的是這是用來移動結束邊界。

選中當前選區

range.select();  //將range包含的區域選中。

需要注意的是:在調用range.select()方法之前,選區對象的內容並不會被添加選中效果。

補充

var range = document.selection.createRange();

這個方法根據當前頁面中的選中文字區域來創建一個選區對象,這個選區對象與createTextRange方法的到選區對象的區別在於,它的選區範圍為頁面選中文字的區域,即它的左右邊界不再是默認的左最小右最大。

range.move(param1,param2);

和moveStart參數一樣,對於移動光標比較友好。

user avatar weirdo_5f6c401c6cc86 頭像 mulander 頭像 lihaixing 頭像 nealyang231 頭像 shangxindi 頭像 xiaojt 頭像 lilin_5e390e08b42e4 頭像 jiasm 頭像 tongouba 頭像 compose_hub 頭像 opentiny 頭像 jjyin 頭像
15 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.