2011-11-30 97 views
1

我见过很多关于在textarea输入中保留换行符的问题,但我需要相反的。我怀疑我的问题的答案不会是一个好的,但...javascript:在输入字符串上剥离换行符

我正在使用预格式化的电子卡(在Convio,如果这有助于任何人)。我可以添加任何我想要的文本和HTML,但从窗体进入的数据是通过Convio标记进行的,无法更改。

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

Hello, 

How are you? 

这将进入电子卡:

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

换句话说,它插入分隔符标签,之后却也使在实际的换行符每个标签。没问题,对吧?这将正常显示,因为电子邮件阅读器会忽略HTML实际换行符,但不幸的是附加信息被前置到textarea的输入,所以他看起来到电子贺卡是真的:

A message from Mr. John Smith [email protected]<br /> 

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

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

A message from Mr. John Smith [email protected]  
Hello, 

How are you? 

这是问题:我讨厌第一行。我的意思是我真的很讨厌它。信息已经在其他地方的电子贺卡上,我不想在那里。这太不友好了,它在电子卡片上看起来并不吸引人,它几乎总是包装到第二行(这看起来更糟糕,尤其是没有和textarea的第一行之间没有空格),这只会让我想哭。

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

我只限于javascript - 是的,我知道这在PHP中很简单,但我没有这个选项 - 而且我的网站管理员和我几乎得出结论,我们可以'不要做我想做的事情。尽管如此,我还是要仔细检查,并且我很乐意有人来证明我错了。

回答

1

抓住哪个元素具有该消息的innerHTML,并将第一行的子串排出。

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

+0

我去了那个小提琴,它没有奏效。 – hafichuk

+0

好吧,我也遇到了同样的问题,正如我对hafichuk的回应所做的那样,但它给了我一个很好的起点。 IE没有看到换行符,并且它将断开标签更改为旧形式(即'
')。谢谢您的帮助!这是我第一次尝试javascript。 http://jsfiddle.net/Q8gu8/9/ – Dascalargo

+0

那么,它在测试环境中工作。当我把它放在模板中时,它会被完全搞砸。我放弃。感谢您的帮助,伙计们。我希望我能够提高你的能力,但是我自己的声望还不够高。 – Dascalargo

0

您应该能够使用正则表达式与replace()

看到这个fiddle

HTML:

<div class="replace"> 
    A message from Mr. John Smith [email protected]<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的选择。

+0

这似乎不适合我。 –

+0

已更新,未贴上正确的网址。 – hafichuk

+0

嗯...我没有得到任何输出的小提琴。 – Dascalargo

1

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

Foo 
is 
An 
Apple 

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

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

...这意味着我留下了:

is 
An 
Apple 

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