【问题标题】:Refreshing form not preserving textarea line breaks刷新表单不保留 textarea 换行符
【发布时间】:2020-08-18 20:31:49
【问题描述】:

我有一个如下所示的简单表单,有几个输入,只有一个 textarea 输入如下所示:

<form class="box" action = "?" method = "GET" enctype = "multipart/form-data">

<textarea id = "query" name = "query" style="width:810px;height:150px;border:solid 1px #737373;white-space: pre-line;"></textarea>

<script type="text/javascript">
document.getElementById('query').value = "<?php echo $_GET['query'];?>";
</script>

</form>

当用户选择不同的输入时,我的表单会刷新,使用:

onchange = "this.form.submit()"

当我的表单刷新时,我想保留到目前为止的所有输入,这就是为什么我在上面显示的表单中有以下脚本标签:

<script type="text/javascript">
document.getElementById('query').value = "<?php echo $_GET['query'];?>";
</script>

这做得很好,将所有文本保留在一行中,但是当 textarea 超过一行时它不起作用,并且什么也不显示。我什至尝试将文本区域的 css 更改为:

white-space: pre-wrap;

但它似乎不起作用!

如何刷新表单并保留文本区域文本以处理新行?

谢谢!

【问题讨论】:

  • 好吧,我假设它会有换行符,换行符会导致 JavaScript 变量出现问题。为什么还要用javascript来设置,php为什么不直接在textarea里面设置??
  • @espascarello 用户将填写 textarea 输入,我只希望文本保留在 textarea 输入中,因为用户选择其他输入会导致表单提交
  • @FlufflyKitten 有点不同,我想将新行保留在 textarea 输入中而不是其他地方,我尝试了他们的解决方案,但它仍然没有用。无论如何,谢谢!
  • “它什么也不显示” - 显然你忽略了检查浏览器控制台,因为肯定会有一条关于未终止字符串文字的消息。

标签: php html get textarea


【解决方案1】:

您不需要 javascript 代码!您可以将代码更改为:

<form class="box" action = "?" method = "GET" enctype = "multipart/form-data">

<textarea id = "query" name = "query" style="width:810px;height:150px;border:solid 1px #737373;white-space: pre-line;"><?php echo $_GET['query']; ?></textarea>

</form>

【讨论】:

  • 非常感谢!它部分工作,textarea显示文本,但在每个换行符处都有'
    ',我不得不将代码修改为: "", "", nl2br( $_GET['query']));?>" 并且效果很好。非常感谢,谢谢!
  • 欢迎您,亲爱的。我更新了我的答案并删除了已删除的 nl2br 函数,所以你不需要 str_replace 函数;)
  • @AliyanHaq 将其包装在nl2br 中是您首先创建 那些&lt;br /&gt; 的方式。使用str_replace("&lt;br /&gt;", "", nl2br($_GET['query'])),您正在做一件事,然后立即将其反转。零意义。
猜你喜欢
  • 2017-05-17
  • 2015-08-16
  • 2015-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-04
相关资源
最近更新 更多