js TextArea的选中区域处理_Javascript教程-查字典教程网
js TextArea的选中区域处理
js TextArea的选中区域处理
发布时间:2016-12-30 来源:查字典编辑
摘要:(一)获取Textarea的选中区域起点或无选中时的输入光标位置非IE浏览器,如,firefox,chrome,支持selectionSta...

(一)获取Textarea的选中区域起点或无选中时的输入光标位置

非IE浏览器,如,firefox,chrome,支持 selectionStart 获取选中区域的起点,而IE浏览器不支持该属性,需要间接通过TextRange来获得,利用TextRange对象的compareEndPoints方法来进行起点的比较可以实现。

复制代码 代码如下:

getStartPos : function( textarea )

{

if ( typeof textarea.selectionStart != 'undefined' )

{ // 非IE

start = textarea.selectionStart;

}

else

{ // IE

var range = document.selection.createRange();

var range_textarea = document.body.createTextRange();

range_textarea .moveToElementText(textarea);

//比较start point

for ( var sel_start = 0; range_textarea .compareEndPoints('StartToStart' , range) < 0; sel_start++)

range_textarea .moveStart( 'character', 1);

start = sel_start;

} // else

return start;

}

但有点需要注意的是,在chrome下,如果textarea设为readonley,那textarea不会出现输入光标,返回的selectionStart与selectionEnd都为0.firefox下则正常。

(二)设置Textarea中选中的区域

类似的,非IE的浏览器支持setSelectionRange方法指定选中的字符范围,而IE不支持,也是通过TextRange来操作,这里需要注意的是IE下Textarea的选中区间的相对位置问题。如下面的代码是先moveStart,moveEnd把起点与终点都设为0,collapse移动生效后,起点不变,先moveEnd移动区间的终点,再moveStart移动区间的起点,在没有改变起点point之前,可以保证相对位置不变,更容易理解些。 复制代码 代码如下:

/**

* 设置textarea的选中区域

*/

setSelectRange : function( textarea, start, end )

{

if ( typeof textarea.createTextRange != 'undefined' )// IE

{

var range = textarea.createTextRange();

// 先把相对起点移动到0处

range.moveStart( "character", 0)

range.moveEnd( "character", 0);

range.collapse( true); // 移动插入光标到start处

range.moveEnd( "character", end);

range.moveStart( "character", start);

range.select();

} // if

else if ( typeof textarea.setSelectionRange != 'undefined' )

{

textarea.setSelectionRange(start, end);

textarea.focus();

} // else

}

实现了选中区域获取及设置方法后,其他如文字插入,替换的实现就比较简单了。

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新Javascript教程学习
    热门Javascript教程学习
    编程开发子分类