Textarea在开始时忽略多个换行符
Posted
技术标签:
【中文标题】Textarea在开始时忽略多个换行符【英文标题】:Textarea ignoring multiple line breaks at beginning 【发布时间】:2013-09-13 04:45:05 【问题描述】:我有一个从数据库中填充自身的表单。我已经检查了所有正在检索的数据,并且确信它是正确的。
我的一个字段返回开头带有 两个 换行符的文本。当我 echo
文本时,它会显示这两个换行符,但是,如果我在 textarea
中回显文本,它会忽略其中一个换行符...
考虑一下:
$data['field'] = "\n\nTest";
// This shows two line breaks in the code
echo $data['field'];
// This shows two line breaks in the code, but only displays one in the textarea
echo '<textarea>'.$data['field'].'</textarea>'
是不是因为下面的都是一样的:
<textarea>
Value Here
</textarea>
<textarea>Value Here</textarea>
如果是这样,我该如何解决这个问题?我是否应该为任何以换行符开头的数据添加换行符?
【问题讨论】:
好吧,Ben,我已经删除了答案,现在发现它不正确和/或没有帮助你。抱歉耽误您的时间:(祝您的项目好运! @davidkonrad 不要道歉!你很有帮助:-D。感谢您抽出宝贵时间回答问题!!! 【参考方案1】:我遇到了几乎同样的问题,一开始无法重现,但后来我发现了原因:在缩小 html 后,每个textarea
都会显示在一行中。好像有区别。
<textarea>Value here</textarea>
您应该考虑原始 HTML 和缩小 HTML 之间的区别。
如果您使用的是所见即所得编辑器(例如 TinyMCE),请尝试不使用。
如果没有任何帮助,我会在开头添加一个换行符 - 正如您已经提到的。感觉有点脏,很遗憾。
【讨论】:
我对此进行了进一步的研究,现在我绝对可以肯定这是因为我给出的两个示例完全相同。由于 textarea 的值可以位于标签的单独行上,因此忽略第一个换行符......因此,您是正确的,唯一可能的解决方案(我可以看到)是为所有内容添加一个额外的换行符文本区域条目。不是一个很好的修复! :-(【参考方案2】:(我知道这是一个老歌,但我在寻找类似问题的解决方案时遇到了这个问题,所以这是我的解决方案)
问题不在于 多个 换行符。问题在于文本区域开头的换行符被忽略。
因此,在使用数据库中的值填充 textarea 之前,我会检查开头是否有换行符,如果有,我会添加另一个换行符。 这样我就有 2 个换行符而不是 1 个。第一个被忽略,但第二个正在显示。
$text_val = $data['field'];
$pos = strpos($text_val, chr(10));
if ($pos==0) $text_val = chr(10) . $text_val;
echo "<textarea>$text_val</textarea>";
【讨论】:
以上是关于Textarea在开始时忽略多个换行符的主要内容,如果未能解决你的问题,请参考以下文章