INPUT、TEXTAREA以及DIV中控制游標的位置

來源:互聯網
上載者:User
    設定以及擷取游標位置
  • 在Textarea和Input中如下獲得游標函數可以相容IE以及FireFox,對於可編輯DIV,如下代碼僅僅IE下也可以正常運行.

IE分支:函數中的Sel變數是整個文檔的可選地區,所以需要做一個迴圈,使得Sel地區中的文本中的最後一段文本和文字框中的文本做到最長相符,其位移量為游標的位置

function getCaretPos(element)<br />{<br /> var CaretPos = 0; // IE Support<br /> if (document.selection) {<br /> element.focus ();<br /> var Sel = document.selection.createRange();<br /> Sel.moveStart ('character', -element.innerText.length);<br /> var text = Sel.text;<br /> for (var i = 0; i < element.innerText.length; i++)<br /> {<br /> if (element.innerText.substring(0, i + 1) == text.substring(text.length - i - 1, text.length))<br /> {<br /> CaretPos = i + 1;<br /> }<br /> }<br /> }<br /> // Firefox support only for textarea and input<br /> else if (element.selectionStart || element.selectionStart == '0')<br /> CaretPos = element.selectionStart;<br /> alert(CaretPos);<br />}

  • 在Textarea和Input中如下設定函數可以相容IE以及FireFox,對於可編輯DIV,如下代碼僅僅IE下也可以正常運行.

function setCaretPos(/*DomNode*/ element, /*Number*/ location){<br /> if(element.setSelectionRange)<br /> {<br /> element.focus();<br /> element.setSelectionRange(location,location);<br /> }<br /> else if (document.body.createTextRange) {<br /> var range = document.body.createTextRange();<br /> range.moveToElementText(element);<br /> range.collapse(true);<br /> range.move('character', location);<br /> range.select();<br /> }<br />}

    獲得游標所在位置的座標(only IE)

var range = document.selection.createRange();<br />alert(range.offsetLeft);//X座標<br />alert(range.offsetTop);//Y座標

    選取一段文本

    在Textarea和Input中如下設定函數可以相容IE以及FireFox,對於可編輯DIV,如下代碼僅僅IE下也可以正常運行.

 

function setSelect(element,begin, end)<br />{<br /> if (document.body.createTextRange)<br /> {<br /> var range = document.body.createTextRange();<br /> var text = element[element.tagName=='DIV'?'innerText':'value'];<br /> var line1 = text.substring(0, begin).split('/n').length - 1;<br /> var line2 = text.substring(end, text.length).split('/n').length - 1;<br /> range.moveToElementText(element)<br /> range.moveEnd('character',parseInt(end) - element[element.tagName=='DIV'?'innerText':'value'].length + line2);<br /> range.moveStart('character',parseInt(begin) - line1);<br /> range.select();<br /> }<br /> else if(element.setSelectionRange)<br /> {<br /> element.setSelectionRange(begin,end);<br /> }<br />}

對於IE,如果選取一段文本後,可以調用textRange對象的execCommand方法實現對所選文本的格式操作,包括加粗,底線,斜體等,其命令列表為

 

 

命令名稱 參數
italic N/A
bold N/A
strikethrough N/A
underline N/A
insertorderedlist N/A
insertunorderedlist N/A
forecolor 所選字型字型顏色
backcolor 所選文本背景色

舉例

range.execCommand('bold', false, null); range.execCommand('forecolor', false, this.highlightColor);關於IE中的TextRange可以參閱MSDN如下連結

http://msdn.microsoft.com/en-us/library/ms535872(VS.85).aspx

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.