textarea的高度自适应

textarea是一个文本框,谷歌、IE、Opera默认显示两行文本,火狐默认显示3行文本,行数超过两行是会出现滚动条,可以自己设定设定一些行数来进行强制多少行进行显示。

例如:

<textarea name="text" style="width: 300px;">textarea是一个文本框,谷歌、IE、Opera默认显示两行文本,火狐默认显示3行文本,行数超过两行是会出现滚动条,可以自己设定设定一些行数来进行强制多少行进行显示。textarea是一个文本框,谷歌、IE、Opera默认显示两行文本,火狐默认显示3行文本,行数超过两行是会出现滚动条,可以自己设定设定一些行数来进行强制多少行进行显示。textarea是一个文本框,谷歌、IE、Opera默认显示两行文本,火狐默认显示3行文本,行数超过两行是会出现滚动条,可以自己设定设定一些行数来进行强制多少行进行显示。textarea是一个文本框,谷歌、IE、Opera默认显示两行文本,火狐默认显示3行文本,行数超过两行是会出现滚动条,可以自己设定设定一些行数来进行强制多少行进行显示。textarea>

显示结果如下,依次是IE、谷歌、Opera和火狐
这里写图片描述

如下是自己设定行数来进行强制显示

<textarea name="text" style="width: 300px;" rows="4">textarea是一个文本框,谷歌、IE、Opera默认显示两行文本,火狐默认显示3行文本,行数超过两行是会出现滚动条,可以自己设定设定一些行数来进行强制多少行进行显示。textarea是一个文本框,谷歌、IE、Opera默认显示两行文本,火狐默认显示3行文本,行数超过两行是会出现滚动条,可以自己设定设定一些行数来进行强制多少行进行显示。textarea是一个文本框,谷歌、IE、Opera默认显示两行文本,火狐默认显示3行文本,行数超过两行是会出现滚动条,可以自己设定设定一些行数来进行强制多少行进行显示。textarea是一个文本框,谷歌、IE、Opera默认显示两行文本,火狐默认显示3行文本,行数超过两行是会出现滚动条,可以自己设定设定一些行数来进行强制多少行进行显示。textarea>

如下是显示结果,依次是IE、谷歌、Opera和火狐
textarea的高度自适应_第1张图片

可以看到火狐总是比其他浏览器多显示一行内容(猜测估计火狐的行数是按照01234来算的,哈哈)。

那有没有方法在初始化的时候让textarea的高度自适应呢,因为textarea是整行显示,很有可能会忽略未显示出来的内容。

我们来看下面这一张图:
textarea的高度自适应_第2张图片

其中scrollHeight代表的是一个DOM元素的全文高度,利用此我们可以来实现textarea的高度自适应,方法如下:

<textarea name="text" style="width: 300px;">textarea是一个文本框,谷歌、IE、Opera默认显示两行文本,火狐默认显示3行文本,行数超过两行是会出现滚动条,可以自己设定设定一些行数来进行强制多少行进行显示。textarea是一个文本框,谷歌、IE、Opera默认显示两行文本,火狐默认显示3行文本,行数超过两行是会出现滚动条,可以自己设定设定一些行数来进行强制多少行进行显示。textarea是一个文本框,谷歌、IE、Opera默认显示两行文本,火狐默认显示3行文本,行数超过两行是会出现滚动条,可以自己设定设定一些行数来进行强制多少行进行显示。textarea是一个文本框,谷歌、IE、Opera默认显示两行文本,火狐默认显示3行文本,行数超过两行是会出现滚动条,可以自己设定设定一些行数来进行强制多少行进行显示。textarea>
<script>
$.each($("textarea"), function(i, n){
    $(n).css("height", n.scrollHeight + "px");
})
script>

下面我们再来看一下效果,依次是IE、谷歌、Opera和火狐
textarea的高度自适应_第3张图片

完美的实现了textarea的高度以内容的高度来显示,不会造成内容忽略。而且使用起来相当简单,只需要在其js中添加下面这段代码就全部搞定了。

$.each($("textarea"), function(i, n){
    $(n).css("height", n.scrollHeight + "px");
})

你可能感兴趣的:(JavaScript)