使只读文本区域的高度由其内容决定

问题描述 投票:0回答:3

我想让只读输入看起来像 CSS 的 pre 或 div 标签。

我本以为使用文本区域很容易做到,但它似乎是一项艰巨的任务。我可以隐藏边框和调整大小,但无论出于何种原因,我无法使文本区域的高度由其内容决定。

我见过很多关于使用 javascript 自动调整文本区域大小的内容,但是如果它是不需要 javascript 的静态文本,我能做些什么吗?

更新

我只是想澄清一下这样做的目的:我希望用javascript编写、重写,并使用表单提交单个只读元素,同时不将其限制在单个内联区域,这会强制,最好的情况是滚动,最坏的情况是数据丢失。

更新2

根据请求,我创建了一个小提琴来展示我正在尝试执行的操作的示例:http://jsfiddle.net/BUwdE/1/ .

textarea[readonly] {
    width: 100%;
    border: 0;
    resize: none;
    overflow: hidden;
}

您会看到内容在底部被截断,因为文本区域的高度不是由其内容决定的。

html css height textarea readonly
3个回答
2
投票

我实际上尝试做你一直在做的事情。但由于它将是一个“只读”输入,我实际上最终将 CSS 应用于 div 元素。这将是一个可以缓解我们头痛的 hack。

HTML

<div class="faketextarea"> some long long text </div>

CSS

.faketextarea { // css of a text area }



1
投票

<textarea name="whatWillBeSentToServer" rows="4" readonly="readonly">



1
投票
此处

function auto_grow(){ var ts = document.getElementsByTagName('textarea') for (i in Object.keys(ts)){ ts[i].style.height = "5px"; ts[i].style.height = (ts[i].scrollHeight+49)+"px"; } }

textarea {
    resize: none;
    overflow: hidden;
    min-height: 50px;
    max-height: 100px;
    ...
    (properties for your needs)
}
<body onload='auto_grow()'>
    <textarea>anytexts</textarea>
    <textarea>texts 2</textarea>    
</body>
区别在于我在 html 
<body>

标签上分配了 auto_grow() 函数,而不是

<textarea>
标签

小提琴

https://jsfiddle.net/btq7m3a6/

更多

https://jsfiddle.net/8o67huq2/

© www.soinside.com 2019 - 2024. All rights reserved.