首页 > 解决方案 > 为什么我的 textarea 中提交的文本呈现为单行?

问题描述

我不确定问题出在哪里,但是如果我在按住键盘上的一个键的同时输入 textarea,我的数据库的输出将呈现为一行,这会破坏我的页面格式。基本上我只有一长行这样的文本aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa离开页面并且没有任何换行符。

换句话说,如果我不手动键入enter以在我的 textarea 中创建换行符,或者如果我不使用spacebar来写一些看似正常的句子,那么即使 textarea 推送也不存在换行符在我输入时将文本向下一行。

我已经用一个普通的 PHP 脚本尝试了这个,没有过滤我的任何内容(我还确保在呈现文本时不过滤任何内容),这仍然会发生。为什么是这样?有没有办法让我确保我的 textarea 在键入时自动添加新行?

我没有在我的 HTML 中使用colsor rows,而是通过 CSS 生成了高度和宽度。

HTML:

<form action="foo.php" method="post">
    <textarea id="1"></textarea>                                   
    <input id="submit" type="submit" name="submit" value="Comment" />
</form>

CSS:

#1 {
    width: 100%;
    min-height: 126px;
    box-sizing: border-box;
    overflow: hidden;
    resize: none;
    font-size: 15px;
    color: black;
    margin-bottom: 16px;
    padding: 4px 8px;
    border: 2px solid #0716a2;
    border-radius: 0 0 4px 4px;
}

提及在复制和粘贴未格式化的文本(即不是来自这样的站点)时会发生这种情况也可能会有所帮助。我的 textarea 应该能够容纳多个段落。

标签: phphtml

解决方案


在我看来,文本只是被正常渲染。

查看以下具有以下 CSS 的 HTML 位:

div {
  border: 1px solid red;
  width: 400px;
}

这段 HTML:

<div>
  aaaaaa
</div>

渲染:

6

然而,这:

<div>
  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
</div>

呈现:

108

但是这个:

<div>
  aaaaaa aaaaaa aaaaaa aaaaaa aaaaaa aaaaaa aaaaaa aaaaaa aaaaaa aaaaaa aaaaaa aaaaaa aaaaaa aaaaaa aaaaaa aaaaaa aaaaaa aaaaaa
</div>

呈现:

108

挺标准的 但是,如果要解决此问题,可以添加以下样式:

overflow-wrap: break-word;

这会导致长词打断,就像这样(用一些额外的填充文本来显示它如何不会不必要地打断其他词):

在 108 上使用溢出换行断字

我希望这会有所帮助。


推荐阅读