直接上代码: 
方案一: 
  [Ctrl+A 全选 注:引入外部Js需再刷新一下页面才能执行]
方案一在各浏览器中,文本框随内容自适应增长都没有问题;但在删除内容时收缩方面表现有所差异,IE、Opera表现正常,Firefox、Chrome、Safari不会收缩。原因是文本框内容高度小于文本框高度时scrollHeight值等于文本框高度,而不是文本框内容高度。
方案二:
复制代码 代码如下:
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" > 
<HTML> 
<HEAD> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<TITLE>枫芸志 » 文本框textarea高度自适应增长/伸缩</TITLE> 
</HEAD> 
<BODY> 
<textarea rows="5" cols="50" onkeyup="ResizeTextarea()">Textarea高度随内容自适应地增长,无滚动条 
晴枫制作 
</textarea> 
<script type="text/javascript"> 
// 最小高度 
var minRows = 5; 
// 最大高度,超过则出现滚动条 
var maxRows = 12; 
function ResizeTextarea(){ 
var t = document.getElementById('txtContent'); 
if (t.scrollTop == 0) t.scrollTop=1; 
while (t.scrollTop == 0){ 
if (t.rows > minRows) 
t.rows--; 
else 
break; 
t.scrollTop = 1; 
if (t.rows < maxRows) 
t.style.overflowY = "hidden"; 
if (t.scrollTop > 0){ 
t.rows++; 
break; 
} 
} 
while(t.scrollTop > 0){ 
if (t.rows < maxRows){ 
t.rows++; 
if (t.scrollTop == 0) t.scrollTop=1; 
} 
else{ 
t.style.overflowY = "auto"; 
break; 
} 
} 
} 
</script> 
</BODY> 
</HTML> 
方案二在各浏览器中表现相同,皆可使文本框随内容自适应增长和收缩。但有个缺憾是在文本框高度增长的时候,文本框显示会有一个跳动。
另以上两个方案对于通过文本框右键菜单选择剪切、粘贴、删除等命令操作文本内容的情形都无效。可以说暂未找到完美的解决方案,留待以后再来研究。哪位同学如果有完美的方案的话敬请赐教!
其他方案:
A different approach to elastic textareas 方案二即参考此文后实现 Smart TextArea: scrollHeight in IE, Firefox, Opera and Safari原文链接:
您可能感兴趣的文章:
