【发布时间】:2015-07-21 21:14:38
【问题描述】:
我需要增加一个 textarea 的高度,因为它填充了文本。我以前为此有一个 JavaScript/JQuery 解决方案
function expandingTextBox(e) {
$(e).css({'height':'80', 'overflow-y':'hidden'}).height(e.scrollHeight);
}
$('textarea').each(function(){
expandingTextBox(80);
}).on('input', function() {
expandingTextBox(this);
});
而这几乎达到了目的。简而言之,我的 Web 应用程序中有一个弹出窗口,我希望能够从其他地方拖动对象,并将它们转储到我的弹出窗口中,创建新的文本区域,调整大小以适应它们的内容。此函数仅在我输入文本区域时调整其大小。
一位同事认为我可以仅使用 CSS 来做到这一点——没有 JavaScript 或 JQuery 插件?我在互联网上找到的所有其他解决方案都至少依赖于一些 JQuery 插件(而且我无法轻松地将新插件下载到我的机器上)。有没有办法只使用 CSS?
我尝试将 textareas 更改为 div,并使用 contenteditable 属性。这在其他地方造成了问题(但需要很长时间才能解释原因)。
谢谢 -- 高文
编辑:如果纯 CSS 不可能,我会接受使用 JavaScript 或 JQuery 的解决方案,我不需要下载额外的插件。
【问题讨论】:
-
请注意,您的
each方法没有任何作用。它将80传递给expandingTextBox(e),而函数内的$(e)将返回一个空集合。 -
不是同一个问题 Akul,但谢谢。该线程中的海报希望文本框水平扩展。提供给他的解决方案不起作用,第二个需要一个 JQuery 插件,我无法在我的机器上下载该插件。但是,如果有人问我到底在问什么,而我只是想念它,请告诉我。
-
不要认为这仅在 CSS 中是可能的。您的代码是否适用于现有的
textareas,但不适用于动态代码? -
@RickHitchcock 是的,我认为你是对的。这是我摆弄别人的解决方案的结果,直到我可以让 textareas 的最小高度为 80px。不管有没有 80 存在——尽管它毫无意义——问题仍然存在。 D:
标签: css textarea autoresize