【问题标题】:javascript: stripping line breaks on an input stringjavascript:在输入字符串上去除换行符
【发布时间】:2011-11-30 22:39:24
【问题描述】:

我已经看到很多关于在 textarea 输入中保留换行符的问题,但我需要相反。我怀疑我的问题的答案不会是一个好的答案,但是......

我正在使用预先格式化的电子贺卡(在 Convio 中,如果对任何人有帮助的话)。我可以添加任何我想要的文本和 HTML,但是从表单中传入的数据是通过 Convio 标记进行的,并且无法更改。

这就是我要说的。文本区域输入是:

Hello,

How are you?

这将进入电子贺卡:

Hello,<br />
<br />
How are you?

换句话说,它确实插入了换行符,但它也在每个标签之后放置了一个实际的换行符。没问题,对吧?这将正确显示,因为电子邮件阅读器会忽略 HTML 中的实际换行符,但不幸的是附加信息会添加到 textarea 输入中,因此进入电子贺卡的内容实际上是:

A message from Mr. John Smith johnsmith@xxx.com.<br />

Hello,<br />
<br />
How are you?

姓名和电子邮件地址来自表单中的其他字段。当然,这显示为:

A message from Mr. John Smith johnsmith@xxx.com.    
Hello,

How are you?

问题是:我讨厌第一行。我的意思是我真的很讨厌它。该信息已经在其他地方的电子卡上,我不希望它在那里。它太不友好了,它在电子卡片上的视觉效果不吸引人,它几乎总是换到第二行(看起来更糟,尤其是它和文本区域的第一行之间没有空格),这让我想哭。

如果所有内容都以字符串形式出现而没有实际的换行符,那么我可以毫无问题地对文本进行切片和切块以删除第一行。我可以编辑输入表单以删除 textarea 输入中的实际中断,但是“来自...的消息”消息之后的那两个换行符正在杀死我。我不知道如何使输入字符串适合 javascript。

我仅限于 javascript--是的,我知道这在 PHP 中很简单,但我没有那个选项--我和我的网站管理员几乎得出结论,我们不能做我想做的事。不过,我必须仔细检查,我希望有人能证明我错了。

【问题讨论】:

    标签: javascript line-breaks


    【解决方案1】:

    获取包含消息的元素的innerHTML,并将第一行作为子字符串。

    http://jsfiddle.net/Q8gu8/4/

    【讨论】:

    • 好的,我遇到了与下面 hafichuk 的回复相同的问题,但它给了我一个很好的起点。 IE 没有看到换行符,它将中断标记更改为旧形式(即&lt;BR&gt;)。谢谢您的帮助!这是我第一次尝试 javascript。 jsfiddle.net/Q8gu8/9
    • 嗯,它在测试环境中工作。当我将它放入模板中时,它会完全搞砸。我放弃。谢谢你们的帮助,伙计们。我希望我能超越你,但我自己的声誉还不够高。
    • 如果您可以从您正在使用的模板中发布一些代码,我相信我们可以让它为您工作......这就是我们在这里的原因:)
    【解决方案2】:

    您可以使用"\n" 匹配换行符(或\r 用于回车)。所以,如果我有以下字符串:

    Foo
    is
    An
    Apple
    

    我可以像这样删除第一行:

    // assume the string is stored in variable `str`
    str = str.replace(/^.+?\n/, '');
    

    ...这意味着我只剩下:

    is
    An
    Apple
    

    /^.+?\n/ 是一个正则表达式,意思是:匹配所有内容,包括第一个换行符。

    【讨论】:

      【解决方案3】:

      您应该能够使用带有replace() 的正则表达式

      看到这个fiddle

      HTML:

      <div class="replace">
          A message from Mr. John Smith johnsmith@xxx.com.<br />
      
      Hello,<br />
      <br />
      How are you?
      <div>
      

      JS:

      var haystack = $('.replace').html();
      
      var regex = /A message.*/;
      $('.replace').html(haystack.replace(regex, ""));
      

      输出:

      Hello,
      
      How are you?
      

      请注意,这是使用 JQuery 作为选择器。

      【讨论】:

      • 嗯...我在小提琴上没有得到任何输出。
      • 我收回它:它在 Firefox 上运行良好。我需要在工作中使用 IE,但它在那里不起作用。
      猜你喜欢
      • 2017-11-14
      • 2013-05-23
      • 1970-01-01
      • 2010-11-30
      • 1970-01-01
      • 2016-08-31
      • 2014-10-04
      • 2014-09-26
      • 1970-01-01
      相关资源
      最近更新 更多