【问题标题】:Line break inside text area html文本区域html内的换行符
【发布时间】:2021-07-29 01:59:22
【问题描述】:

我正在制作一个表格来填写并创建一个 pdf,但我遇到了文本区域的问题,我希望用户输入文本,并在书写和按下空格时返回到这样的行:

我希望它自动显示在 pdf 中,但我得到了这个:

我该如何解决?代码是:

<div class="mb-2"><textarea name="element" placeholder="Elements à fournir" class="form-control"></textarea></div>

【问题讨论】:

标签: php html css bootstrap-4


【解决方案1】:

您需要将文本区域中的换行符(\r\n)转换为 PDF 可以理解的换行符(&lt;br /&gt;&lt;div&gt;&lt;li&gt; 等)。

一个简单的PHP方式是

$string = nl2br($string);
// converts \n to <br />

如果您需要即时转换这些换行符(例如您正在捕获输入并将其显示为用户键入的格式),请在 javascript 中执行。这是一个方便的函数,取自:https://stackoverflow.com/a/7467863/1772933

function nl2br (str, is_xhtml) {
    if (typeof str === 'undefined' || str === null) {
        return '';
    }
    var breakTag = (is_xhtml || typeof is_xhtml === 'undefined') ? '<br />' : '<br>';
    return (str + '').replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1' + breakTag + '$2');
}

这是一个在用户输入时如何使用该功能的示例

$('#TextArea').keypress(function(evt){
        $('#TextArea').html(nl2br($('#TextArea').val())); // replace linebreaks first
        $('#pdfPreviewArea').html($('#TextArea').val()); // copy to #pdfPreviewArea
    });

【讨论】:

  • 对不起,我还不太明白,我需要把输入放在你现在评论的里面吗?
  • 解释过程 - 用户在 textarea 中键入...然后呢?他们提交表单并生成 PDF 吗?如果是这样,我上面放的 PHP 方法是一种将输入文本转换为格式化文本的方法。如果这一切都是通过javascript发生的,我也会修改我的答案
  • 是的,在输入文本区域后,用户单击提交,然后他输入的内容需要显示在生成的 pdf 中,但不是在一行中显示,而是我希望它在任何时候回到行就像我在第一张图片中显示的那样按 Enter,我为该文本区域定义了变量 $just=$_POST['just']; 并将其放入带有 &lt;p style="text-indent:40pxpx"&gt;'.$just.'&lt;/p&gt;'; 的 pdf 中,并希望它以与我在生成 pdf 后输入它的方式相同的方式显示
  • 只需将这一行更改为:$just=nl2br($_POST['just']);
  • @HanaaAlaouiBelghiti 太好了!请接受此作为答案,如果可以,请给予支持。干杯
猜你喜欢
  • 2014-03-31
  • 2011-06-06
  • 2010-09-09
  • 2012-01-28
  • 2023-03-14
  • 1970-01-01
相关资源
最近更新 更多