gpt4 book ai didi

javascript - 输入开始时 Rails 文本区域高度突然增加

转载 作者:行者123 更新时间:2023-11-28 07:21:02 25 4
gpt4 key购买 nike

在 View 中:

<%= f.text_area :content, rows: 2, class: "notice_area" %>

我有以下将文本区域的高度调整为行数的 javascript:

<script type="text/javascript">
function h(e) {
$(e).css({'height':'auto','overflow-y':'hidden'}).height(e.scrollHeight);
}
$('.notice_area').each(function () {
h(this);
}).on('input', function () {
h(this);
});
</script>

CSS:

.notice_area {
display: inline-block;
width: 100%;
min-height: 46px;
padding-top: 3px;
padding-bottom: 0px;
border-radius: 7px;
border: 1px solid red;
}

问题是,当您开始在文本区域中输入时,无论 padding-top 的值是多少,高度都会突然从默认的 46px 增加,在本例中为 3px。这是一件小事,但非常烦人。当 padding-top 设置为 0px 时就可以了。我不明白为什么开始输入时高度不会保持在 46px。为什么会这样?我已尽一切努力阻止它,但没有成功。

最佳答案

不幸的是,我无法在实验室环境中复制整个行为。您可能想看一看:http://jsfiddle.net/L9b9tdbu/1/ .

但在我看来,问题在于 scrollHeight 包含填充这一事实。所以你得到它并将它分配给高度,本质上是再次放入填充,这使得文本区域增长了 3 个像素。

如果我是你,我会尝试将代码更改为:

function h(e) {
$(e).css({'height':'auto','overflow-y':'hidden'}).height(e.scrollHeight-3);
}
$('.notice_area').each(function () {
h(this);
}).on('input', function () {
h(this);
});

即在设置高度之前减去应用的所有填充。

希望对您有所帮助!

关于javascript - 输入开始时 Rails 文本区域高度突然增加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32084314/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com