javascript:在输入字符串上剥离换行符

时间:2011-11-30 22:39:24

标签: javascript line-breaks

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

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

这就是我所说的。 textarea输入是:

Hello,

How are you?

这将进入电子贺卡:

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

换句话说,它会插入break标记,但它也会在每个标记之后放入一个实际的换行符。没问题,对吧?这将显示正确,因为电子邮件阅读器忽略了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的第一行),它只是让我想哭。

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

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

3 个答案:

答案 0 :(得分:1)

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

Foo
is
An
Apple

我可以删除第一行:

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

...这意味着我离开了:

is
An
Apple

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

答案 1 :(得分:1)

获取其中任何元素都有消息的innerHTML,并将第一行的子字符串输出。

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

答案 2 :(得分:0)

您应该能够使用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作为选择器。