2011-07-05 97 views
4

嗨,我有这个自动扩展textarea jquery代码,目前,除了谷歌浏览器,它在某种程度上工作。textarea自动扩展

问题是,当我将样式padding:3px添加到textarea时,每当我在框中键入内容时,它将展开高度。如果我删除了样式填充,它将很好地工作。

测试是在这里:http://jsfiddle.net/JkxgB/(使用谷歌浏览器进行测试)

我一直在试图找出原因,如果任何人都可以在这里提供一些线索将不胜感激。先谢谢了。

+0

为什么使用价值的长度?你不应该算数线吗? – Christian

+0

虽然不确定,但这是我得到某处的插件。 – pakito

+0

不直接相关:您正在无限期地扩展。这可能会造成一些烦恼。你可能要考虑只扩展到某个点,然后添加滚动条。 – Nivas

回答

2

我建议你使用这个插件来代替:

http://plugins.jquery.com/project/TextAreaResizer

StackOverflow上使用此插件的文字区域!我必须说更多吗?

希望这会有所帮助。干杯

PS:或者,您可以使用autogrow plugin

+0

感谢您的建议埃德加。首先我需要像自动扩展,所以stackovflw resizer不是我的东西另外许多最新的浏览器现在自动支持resizer到textarea,因此这个插件是多余的 其次,我已经看到并尝试了很多插件,其中很多插件通常会在文本底部留下额外的空间你输入。我发布的插件对我来说是最好的。 – pakito

0

太难过了,你04年前问,我只是看到它。

发生此问题的原因是scrollHeight属性以像素为单位返回元素的整个高度;包括填充,但不包括边框,滚动条或边距。 (至少在Chrome,IE和Firefox中,这三个我已经测试过)。

编号:Element Scroll Height

所以,我在你的jsfiddle改变line 17如下,和问题解决了。

var h = Math.max(e.expandMin, Math.min(e.scrollHeight - 6, e.expandMax));