我已经看到很多关于在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中很简单,但我没有那个选项 - 我的网站管理员和我几乎得出的结论是我们不能做我想做的事。不过,我不得不仔细检查,而且我喜欢有人证明我错了。
答案 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,并将第一行的子字符串输出。
答案 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作为选择器。