指定选取textarea的特定行

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

通常状况下,大家都使采用判断来判断textarea控件中含有多少行,但是,有这么一种情况,就是没有使用回车,而是字符过宽而textarea自动换的行,很显然,上面那种方法就不可行了.

这里,我封装了一个方法getTextRange(num, areaId),这个方法只需要传入textarea的id及其需要的行号,即可以返回指定行,为了灵活,这里没有返回指定行的文本,而是返回了指定行的一个trange对象,如果需要文本,只需调用trange对象的text属性即可.

把下面的代码拷贝到一个htm文件中即可以看到效果.

<!-- 欢迎转载,请保留作者及其出处,谢谢 -->

<HTML>

<HEAD>

<META http-equiv="Content-Type" content="text/html; charset=gb2312">

<SCRIPT language="javascript">

/**

* added by LxcJie 2004.7.16

* 返回指定行的range对象

* num为行号,areaId为textarea的id

*/

function getTextRange(num, areaId)

{

var range = document.all(areaId).createTextRange();

var rect = range.getClientRects();

var left = rect[0].left;

if(num > rect.length - 1 || num < 0)

return;

if(num == 0)

{

var right = rect[0].right;

range.moveEnd("character",-range.text.length);

while(range.offsetLeft + range.boundingWidth < right)

{

range.expand("character");

}

return range;

}

else

{

var right = rect[num].right;

var range = getTextRange(num - 1, areaId);

range.moveStart("character",range.text.length + 1);

while(range.offsetLeft + range.boundingWidth < right)

{

range.expand("character");

}

if(range.offsetLeft > left)

range.moveStart("character",-1);

return range;

}

}

function getText(num)

{

var range = getTextRange(num,"area")

if(range != null)

{

alert(range.text);

range.select();

}

}

</SCRIPT>

</HEAD>

<BODY>

<TEXTAREA cols="50" rows="10" id="area">

vsdasdasu

fsdasdasiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

bsdasdasd

</TEXTAREA><p>

<input type="button" onClick="getText(0)" value="选第一行">

<input type="button" onClick="getText(1)" value="选第二行">

<input type="button" onClick="getText(2)" value="选第三行">

<input type="button" onClick="getText(3)" value="选第四行">

</BODY>

</HTML>

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航